ropav 0.0.7 → 0.0.8

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 (73) hide show
  1. package/dist/accordion.js +0 -2
  2. package/dist/badge.js +0 -2
  3. package/dist/bem.js +0 -2
  4. package/dist/button-group.js +0 -2
  5. package/dist/button.js +0 -2
  6. package/dist/card.css +40 -20
  7. package/dist/card.js +69 -38
  8. package/dist/checkbox.js +0 -2
  9. package/dist/collapse.css +6 -6
  10. package/dist/collapse.js +3 -9
  11. package/dist/componentColors.js +0 -2
  12. package/dist/components/card/card.d.ts +4 -0
  13. package/dist/components/card/types.d.ts +4 -0
  14. package/dist/components/collapse/types.d.ts +0 -2
  15. package/dist/components/field/useField.d.ts +1 -0
  16. package/dist/components/modal/types.d.ts +0 -1
  17. package/dist/components/popover/types.d.ts +4 -1
  18. package/dist/components/popover/usePopover.d.ts +5 -2
  19. package/dist/dropdown-menu.js +0 -2
  20. package/dist/field.css +11 -8
  21. package/dist/field.js +46 -23
  22. package/dist/icon-button.js +0 -2
  23. package/dist/input.js +0 -2
  24. package/dist/modal.css +28 -28
  25. package/dist/modal.js +9 -15
  26. package/dist/overlay.js +0 -2
  27. package/dist/popover.css +16 -16
  28. package/dist/popover.js +17 -7
  29. package/dist/progress.js +0 -2
  30. package/dist/radio.js +0 -2
  31. package/dist/select.js +0 -2
  32. package/dist/slider.js +0 -2
  33. package/dist/switch.js +0 -2
  34. package/dist/tabs.js +0 -2
  35. package/dist/textarea.js +0 -2
  36. package/dist/tooltip.js +0 -2
  37. package/dist/useButtonColor.js +0 -2
  38. package/dist/useClickOutside.js +0 -2
  39. package/dist/useCollapse.js +1 -3
  40. package/dist/useControlState.js +0 -2
  41. package/dist/useRequiredInject.js +0 -2
  42. package/dist/x.js +0 -2
  43. package/package.json +6 -2
  44. package/dist/accordion.js.map +0 -1
  45. package/dist/badge.js.map +0 -1
  46. package/dist/bem.js.map +0 -1
  47. package/dist/button-group.js.map +0 -1
  48. package/dist/button.js.map +0 -1
  49. package/dist/card.js.map +0 -1
  50. package/dist/checkbox.js.map +0 -1
  51. package/dist/collapse.js.map +0 -1
  52. package/dist/componentColors.js.map +0 -1
  53. package/dist/dropdown-menu.js.map +0 -1
  54. package/dist/field.js.map +0 -1
  55. package/dist/icon-button.js.map +0 -1
  56. package/dist/input.js.map +0 -1
  57. package/dist/modal.js.map +0 -1
  58. package/dist/overlay.js.map +0 -1
  59. package/dist/popover.js.map +0 -1
  60. package/dist/progress.js.map +0 -1
  61. package/dist/radio.js.map +0 -1
  62. package/dist/select.js.map +0 -1
  63. package/dist/slider.js.map +0 -1
  64. package/dist/switch.js.map +0 -1
  65. package/dist/tabs.js.map +0 -1
  66. package/dist/textarea.js.map +0 -1
  67. package/dist/tooltip.js.map +0 -1
  68. package/dist/useButtonColor.js.map +0 -1
  69. package/dist/useClickOutside.js.map +0 -1
  70. package/dist/useCollapse.js.map +0 -1
  71. package/dist/useControlState.js.map +0 -1
  72. package/dist/useRequiredInject.js.map +0 -1
  73. package/dist/x.js.map +0 -1
package/dist/input.js CHANGED
@@ -137,5 +137,3 @@ var input_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
137
137
  }), [["__scopeId", "data-v-e5ad32a7"]]);
138
138
  //#endregion
139
139
  export { input_default as t };
140
-
141
- //# sourceMappingURL=input.js.map
package/dist/modal.css CHANGED
@@ -1,4 +1,4 @@
1
- .rp-modal[data-v-fe44cbf7] {
1
+ .rp-modal[data-v-657f313d] {
2
2
  --_rp-modal-width: 32rem;
3
3
  --_rp-modal-max-height: calc(100vh - var(--rp-spacing-12));
4
4
  --_rp-modal-radius: var(--rp-radius-sm);
@@ -12,25 +12,25 @@
12
12
  overflow: auto;
13
13
  font-family: var(--rp-font-family);
14
14
  }
15
- .rp-modal--size-sm[data-v-fe44cbf7] {
15
+ .rp-modal--size-sm[data-v-657f313d] {
16
16
  --_rp-modal-width: 22rem;
17
17
  }
18
- .rp-modal--size-lg[data-v-fe44cbf7] {
18
+ .rp-modal--size-lg[data-v-657f313d] {
19
19
  --_rp-modal-width: 45rem;
20
20
  }
21
- .rp-modal--size-xl[data-v-fe44cbf7] {
21
+ .rp-modal--size-xl[data-v-657f313d] {
22
22
  --_rp-modal-width: 58rem;
23
23
  }
24
- .rp-modal--size-full[data-v-fe44cbf7] {
24
+ .rp-modal--size-full[data-v-657f313d] {
25
25
  --_rp-modal-width: 100vw;
26
26
  --_rp-modal-max-height: 100vh;
27
27
  --_rp-modal-radius: var(--rp-radius-none);
28
28
  padding: 0;
29
29
  }
30
- .rp-modal__overlay[data-v-fe44cbf7] {
30
+ .rp-modal__overlay[data-v-657f313d] {
31
31
  border-radius: 0;
32
32
  }
33
- .rp-modal__panel[data-v-fe44cbf7] {
33
+ .rp-modal__panel[data-v-657f313d] {
34
34
  position: relative;
35
35
  z-index: 1;
36
36
  box-sizing: border-box;
@@ -46,39 +46,39 @@
46
46
  box-shadow: var(--rp-shadow-lg);
47
47
  outline: none;
48
48
  }
49
- .rp-modal--size-full .rp-modal__panel[data-v-fe44cbf7] {
49
+ .rp-modal--size-full .rp-modal__panel[data-v-657f313d] {
50
50
  min-height: 100vh;
51
51
  border: 0;
52
52
  }
53
- .rp-modal__header[data-v-fe44cbf7] {
53
+ .rp-modal__header[data-v-657f313d] {
54
54
  box-sizing: border-box;
55
55
  padding: var(--rp-spacing-5) calc(var(--rp-spacing-6) + var(--rp-size-control-sm)) var(--rp-spacing-4) var(--rp-spacing-5);
56
56
  border-bottom: var(--rp-border-width-thin) solid var(--rp-color-border);
57
57
  }
58
- .rp-modal__heading[data-v-fe44cbf7] {
58
+ .rp-modal__heading[data-v-657f313d] {
59
59
  display: grid;
60
60
  gap: var(--rp-spacing-1);
61
61
  }
62
- .rp-modal__title[data-v-fe44cbf7] {
62
+ .rp-modal__title[data-v-657f313d] {
63
63
  margin: 0;
64
64
  color: var(--rp-color-text);
65
65
  font-size: var(--rp-font-size-xl);
66
66
  font-weight: var(--rp-font-weight-semibold);
67
67
  line-height: var(--rp-line-height-tight);
68
68
  }
69
- .rp-modal__description[data-v-fe44cbf7] {
69
+ .rp-modal__description[data-v-657f313d] {
70
70
  margin: 0;
71
71
  color: var(--rp-color-text-secondary);
72
72
  font-size: var(--rp-font-size-sm);
73
73
  line-height: var(--rp-line-height-normal);
74
74
  }
75
- .rp-modal__close[data-v-fe44cbf7] {
75
+ .rp-modal__close[data-v-657f313d] {
76
76
  position: absolute;
77
77
  top: var(--rp-spacing-3);
78
78
  right: var(--rp-spacing-3);
79
79
  z-index: 1;
80
80
  }
81
- .rp-modal__body[data-v-fe44cbf7] {
81
+ .rp-modal__body[data-v-657f313d] {
82
82
  box-sizing: border-box;
83
83
  flex: 1 1 auto;
84
84
  min-height: 0;
@@ -88,10 +88,10 @@
88
88
  font-size: var(--rp-font-size-base);
89
89
  line-height: var(--rp-line-height-normal);
90
90
  }
91
- .rp-modal--closable.rp-modal--headerless .rp-modal__body[data-v-fe44cbf7] {
91
+ .rp-modal--closable.rp-modal--headerless .rp-modal__body[data-v-657f313d] {
92
92
  padding-right: calc(var(--rp-spacing-6) + var(--rp-size-control-sm));
93
93
  }
94
- .rp-modal__footer[data-v-fe44cbf7] {
94
+ .rp-modal__footer[data-v-657f313d] {
95
95
  box-sizing: border-box;
96
96
  display: flex;
97
97
  flex: 0 0 auto;
@@ -101,34 +101,34 @@
101
101
  padding: var(--rp-spacing-4) var(--rp-spacing-5);
102
102
  border-top: var(--rp-border-width-thin) solid var(--rp-color-border);
103
103
  }
104
- .rp-modal-enter-active[data-v-fe44cbf7],
105
- .rp-modal-leave-active[data-v-fe44cbf7] {
104
+ .rp-modal-enter-active[data-v-657f313d],
105
+ .rp-modal-leave-active[data-v-657f313d] {
106
106
  transition: opacity var(--rp-transition-fast);
107
107
  }
108
- .rp-modal-enter-active .rp-modal__panel[data-v-fe44cbf7],
109
- .rp-modal-leave-active .rp-modal__panel[data-v-fe44cbf7] {
108
+ .rp-modal-enter-active .rp-modal__panel[data-v-657f313d],
109
+ .rp-modal-leave-active .rp-modal__panel[data-v-657f313d] {
110
110
  transition: opacity var(--rp-transition-fast), transform var(--rp-transition-fast);
111
111
  }
112
- .rp-modal-enter-from[data-v-fe44cbf7],
113
- .rp-modal-leave-to[data-v-fe44cbf7] {
112
+ .rp-modal-enter-from[data-v-657f313d],
113
+ .rp-modal-leave-to[data-v-657f313d] {
114
114
  opacity: 0;
115
115
  }
116
- .rp-modal-enter-from .rp-modal__panel[data-v-fe44cbf7],
117
- .rp-modal-leave-to .rp-modal__panel[data-v-fe44cbf7] {
116
+ .rp-modal-enter-from .rp-modal__panel[data-v-657f313d],
117
+ .rp-modal-leave-to .rp-modal__panel[data-v-657f313d] {
118
118
  opacity: 0;
119
119
  transform: translateY(var(--rp-spacing-2)) scale(0.98);
120
120
  }
121
121
  @media (max-width: 480px) {
122
- .rp-modal[data-v-fe44cbf7] {
122
+ .rp-modal[data-v-657f313d] {
123
123
  padding: var(--rp-spacing-3);
124
124
  }
125
- .rp-modal__header[data-v-fe44cbf7] {
125
+ .rp-modal__header[data-v-657f313d] {
126
126
  padding-left: var(--rp-spacing-4);
127
127
  }
128
- .rp-modal__body[data-v-fe44cbf7] {
128
+ .rp-modal__body[data-v-657f313d] {
129
129
  padding: var(--rp-spacing-4);
130
130
  }
131
- .rp-modal__footer[data-v-fe44cbf7] {
131
+ .rp-modal__footer[data-v-657f313d] {
132
132
  padding: var(--rp-spacing-4);
133
133
  }
134
134
  }
package/dist/modal.js CHANGED
@@ -76,7 +76,7 @@ function useModal(props, emitOpenChange) {
76
76
  const slots = useSlots();
77
77
  const generatedId = useId();
78
78
  const panelRef = ref(null);
79
- const uncontrolledOpen = ref(Boolean(props.defaultOpen));
79
+ const uncontrolledOpen = ref(false);
80
80
  const modalToken = Symbol("modal");
81
81
  let isMounted = false;
82
82
  let isActiveModal = false;
@@ -275,13 +275,13 @@ function useModal(props, emitOpenChange) {
275
275
  }
276
276
  //#endregion
277
277
  //#region src/components/modal/modal.vue?vue&type=script&setup=true&vapor=true&lang.ts
278
- var t0 = template("<h2 data-v-fe44cbf7 class=rp-modal__title> ");
279
- var t1 = template("<p data-v-fe44cbf7 class=rp-modal__description> ");
280
- var t2 = template("<div data-v-fe44cbf7 class=rp-modal__heading>");
281
- var t3 = template("<div data-v-fe44cbf7 class=rp-modal__header>");
282
- var t4 = template("<div data-v-fe44cbf7 class=rp-modal__body>");
283
- var t5 = template("<div data-v-fe44cbf7 class=rp-modal__footer>");
284
- var t6 = template("<div data-v-fe44cbf7><section data-v-fe44cbf7 class=rp-modal__panel aria-modal=true tabindex=-1>");
278
+ var t0 = template("<h2 data-v-657f313d class=rp-modal__title> ");
279
+ var t1 = template("<p data-v-657f313d class=rp-modal__description> ");
280
+ var t2 = template("<div data-v-657f313d class=rp-modal__heading>");
281
+ var t3 = template("<div data-v-657f313d class=rp-modal__header>");
282
+ var t4 = template("<div data-v-657f313d class=rp-modal__body>");
283
+ var t5 = template("<div data-v-657f313d class=rp-modal__footer>");
284
+ var t6 = template("<div data-v-657f313d><section data-v-657f313d class=rp-modal__panel aria-modal=true tabindex=-1>");
285
285
  //#endregion
286
286
  //#region src/components/modal/modal.vue
287
287
  var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -293,10 +293,6 @@ var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
293
293
  type: Boolean,
294
294
  default: void 0
295
295
  },
296
- defaultOpen: {
297
- type: Boolean,
298
- default: false
299
- },
300
296
  title: { default: "" },
301
297
  description: { default: "" },
302
298
  ariaLabel: { default: "" },
@@ -426,8 +422,6 @@ var modal_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__
426
422
  }, null, 129);
427
423
  }, { _: 8 }), true);
428
424
  }
429
- }), [["__scopeId", "data-v-fe44cbf7"]]);
425
+ }), [["__scopeId", "data-v-657f313d"]]);
430
426
  //#endregion
431
427
  export { modal_default as t };
432
-
433
- //# sourceMappingURL=modal.js.map
package/dist/overlay.js CHANGED
@@ -80,5 +80,3 @@ var overlay_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
80
80
  }), [["__scopeId", "data-v-4a733439"]]);
81
81
  //#endregion
82
82
  export { overlay_default as t };
83
-
84
- //# sourceMappingURL=overlay.js.map
package/dist/popover.css CHANGED
@@ -1,4 +1,4 @@
1
- .rp-popover[data-v-afdc2686] {
1
+ .rp-popover[data-v-fd62ef9b] {
2
2
  --_rp-popover-main-axis-offset: var(--rp-spacing-2);
3
3
  --_rp-popover-cross-axis-offset: 0px;
4
4
  --_rp-popover-radius: var(--rp-radius-sm);
@@ -7,7 +7,7 @@
7
7
  font-family: var(--rp-font-family);
8
8
  vertical-align: middle;
9
9
  }
10
- .rp-popover__content[data-v-afdc2686] {
10
+ .rp-popover__content[data-v-fd62ef9b] {
11
11
  position: absolute;
12
12
  z-index: 100;
13
13
  box-sizing: border-box;
@@ -23,53 +23,53 @@
23
23
  border-radius: var(--_rp-popover-radius);
24
24
  box-shadow: var(--rp-shadow-base);
25
25
  }
26
- .rp-popover--placement-top .rp-popover__content[data-v-afdc2686] {
26
+ .rp-popover--placement-top .rp-popover__content[data-v-fd62ef9b] {
27
27
  bottom: calc(100% + var(--_rp-popover-main-axis-offset));
28
28
  left: calc(50% + var(--_rp-popover-cross-axis-offset));
29
29
  translate: -50% 0;
30
30
  }
31
- .rp-popover--placement-right .rp-popover__content[data-v-afdc2686] {
31
+ .rp-popover--placement-right .rp-popover__content[data-v-fd62ef9b] {
32
32
  top: calc(50% + var(--_rp-popover-cross-axis-offset));
33
33
  left: calc(100% + var(--_rp-popover-main-axis-offset));
34
34
  translate: 0 -50%;
35
35
  }
36
- .rp-popover--placement-bottom .rp-popover__content[data-v-afdc2686] {
36
+ .rp-popover--placement-bottom .rp-popover__content[data-v-fd62ef9b] {
37
37
  top: calc(100% + var(--_rp-popover-main-axis-offset));
38
38
  left: calc(50% + var(--_rp-popover-cross-axis-offset));
39
39
  translate: -50% 0;
40
40
  }
41
- .rp-popover--placement-left .rp-popover__content[data-v-afdc2686] {
41
+ .rp-popover--placement-left .rp-popover__content[data-v-fd62ef9b] {
42
42
  top: calc(50% + var(--_rp-popover-cross-axis-offset));
43
43
  right: calc(100% + var(--_rp-popover-main-axis-offset));
44
44
  translate: 0 -50%;
45
45
  }
46
- .rp-popover--target[data-v-afdc2686] {
46
+ .rp-popover--target[data-v-fd62ef9b] {
47
47
  display: contents;
48
48
  }
49
- .rp-popover--target .rp-popover__content[data-v-afdc2686] {
49
+ .rp-popover--target .rp-popover__content[data-v-fd62ef9b] {
50
50
  position: fixed;
51
51
  top: var(--_rp-popover-target-y, 0);
52
52
  right: auto;
53
53
  bottom: auto;
54
54
  left: var(--_rp-popover-target-x, 0);
55
55
  }
56
- .rp-popover--target.rp-popover--placement-top .rp-popover__content[data-v-afdc2686] {
56
+ .rp-popover--target.rp-popover--placement-top .rp-popover__content[data-v-fd62ef9b] {
57
57
  translate: calc(-50% + var(--_rp-popover-cross-axis-offset)) calc(-100% - var(--_rp-popover-main-axis-offset));
58
58
  }
59
- .rp-popover--target.rp-popover--placement-right .rp-popover__content[data-v-afdc2686] {
59
+ .rp-popover--target.rp-popover--placement-right .rp-popover__content[data-v-fd62ef9b] {
60
60
  translate: var(--_rp-popover-main-axis-offset) calc(-50% + var(--_rp-popover-cross-axis-offset));
61
61
  }
62
- .rp-popover--target.rp-popover--placement-bottom .rp-popover__content[data-v-afdc2686] {
62
+ .rp-popover--target.rp-popover--placement-bottom .rp-popover__content[data-v-fd62ef9b] {
63
63
  translate: calc(-50% + var(--_rp-popover-cross-axis-offset)) var(--_rp-popover-main-axis-offset);
64
64
  }
65
- .rp-popover--target.rp-popover--placement-left .rp-popover__content[data-v-afdc2686] {
65
+ .rp-popover--target.rp-popover--placement-left .rp-popover__content[data-v-fd62ef9b] {
66
66
  translate: calc(-100% - var(--_rp-popover-main-axis-offset)) calc(-50% + var(--_rp-popover-cross-axis-offset));
67
67
  }
68
- .rp-popover-content-enter-active[data-v-afdc2686],
69
- .rp-popover-content-leave-active[data-v-afdc2686] {
68
+ .rp-popover-content-enter-active[data-v-fd62ef9b],
69
+ .rp-popover-content-leave-active[data-v-fd62ef9b] {
70
70
  transition: opacity var(--rp-transition-fast);
71
71
  }
72
- .rp-popover-content-enter-from[data-v-afdc2686],
73
- .rp-popover-content-leave-to[data-v-afdc2686] {
72
+ .rp-popover-content-enter-from[data-v-fd62ef9b],
73
+ .rp-popover-content-leave-to[data-v-fd62ef9b] {
74
74
  opacity: 0;
75
75
  }
package/dist/popover.js CHANGED
@@ -1,7 +1,7 @@
1
1
  import './popover.css';
2
2
  import { t as bem } from "./bem.js";
3
3
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper.js";
4
- import { VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, defineVaporComponent, extend, isRef, onMounted, ref, renderEffect, setClass, setInsertionState, setProp, setStaticTemplateRef, setStyle, template, unref, useId, useSlots, watch } from "vue";
4
+ import { VaporTransition, applyVShow, computed, createComponent, createIf, createSlot, defineVaporComponent, extend, isRef, onMounted, ref, renderEffect, setAttr, setClass, setInsertionState, setProp, setStaticTemplateRef, setStyle, template, unref, useId, useSlots, watch } from "vue";
5
5
  //#region src/components/popover/usePopover.ts
6
6
  var DEFAULT_PLACEMENT = "bottom";
7
7
  var DEFAULT_ROLE = "dialog";
@@ -102,6 +102,9 @@ function usePopover(props, emitOpenChange) {
102
102
  const isVisible = computed(() => isOpen.value && !isDisabled.value);
103
103
  const shouldRenderContent = computed(() => !isDisabled.value);
104
104
  const shouldWireTarget = computed(() => isTargetMode.value && !isDisabled.value);
105
+ const ariaLabel = computed(() => props.ariaLabel || void 0);
106
+ const ariaLabelledby = computed(() => props.ariaLabelledby || void 0);
107
+ const ariaDescribedby = computed(() => props.ariaDescribedby || void 0);
105
108
  const rootClass = computed(() => bem("rp-popover", {
106
109
  [`placement-${placement.value}`]: true,
107
110
  target: isTargetMode.value,
@@ -262,6 +265,9 @@ function usePopover(props, emitOpenChange) {
262
265
  isVisible,
263
266
  isTargetMode,
264
267
  popoverRole,
268
+ ariaLabel,
269
+ ariaLabelledby,
270
+ ariaDescribedby,
265
271
  shouldRenderContent,
266
272
  rootClass,
267
273
  contentStyle,
@@ -276,8 +282,8 @@ function usePopover(props, emitOpenChange) {
276
282
  }
277
283
  //#endregion
278
284
  //#region src/components/popover/popover.vue?vue&type=script&setup=true&vapor=true&lang.ts
279
- var t0 = template("<section data-v-afdc2686 class=rp-popover__content>");
280
- var t1 = template("<span data-v-afdc2686>", 1);
285
+ var t0 = template("<section data-v-fd62ef9b class=rp-popover__content>");
286
+ var t1 = template("<span data-v-fd62ef9b>", 1);
281
287
  //#endregion
282
288
  //#region src/components/popover/popover.vue
283
289
  var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineVaporComponent({
@@ -297,6 +303,9 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
297
303
  default: false
298
304
  },
299
305
  role: { default: "dialog" },
306
+ ariaLabel: {},
307
+ ariaLabelledby: {},
308
+ ariaDescribedby: {},
300
309
  closeOnOutsideClick: {
301
310
  type: Boolean,
302
311
  default: true
@@ -310,7 +319,7 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
310
319
  setup(__props, { emit: __emit }) {
311
320
  const props = __props;
312
321
  const emit = __emit;
313
- const { rootRef, popoverId, isVisible, isTargetMode, popoverRole, shouldRenderContent, rootClass, contentStyle, slotProps, contentSlotProps } = usePopover(props, (open) => {
322
+ const { rootRef, popoverId, isVisible, isTargetMode, popoverRole, ariaLabel, ariaLabelledby, ariaDescribedby, shouldRenderContent, rootClass, contentStyle, slotProps, contentSlotProps } = usePopover(props, (open) => {
314
323
  emit("update:open", open);
315
324
  });
316
325
  const n12 = t1();
@@ -335,6 +344,9 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
335
344
  renderEffect(() => {
336
345
  setProp(n10, "id", unref(popoverId));
337
346
  setProp(n10, "role", unref(popoverRole));
347
+ setAttr(n10, "aria-label", unref(ariaLabel));
348
+ setAttr(n10, "aria-labelledby", unref(ariaLabelledby));
349
+ setAttr(n10, "aria-describedby", unref(ariaDescribedby));
338
350
  setStyle(n10, unref(contentStyle));
339
351
  });
340
352
  setInsertionState(n10, null, 0);
@@ -360,8 +372,6 @@ var popover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
360
372
  setStaticTemplateRef(n12, rootRef, null, "rootRef");
361
373
  return n12;
362
374
  }
363
- }), [["__scopeId", "data-v-afdc2686"]]);
375
+ }), [["__scopeId", "data-v-fd62ef9b"]]);
364
376
  //#endregion
365
377
  export { popover_default as t };
366
-
367
- //# sourceMappingURL=popover.js.map
package/dist/progress.js CHANGED
@@ -174,5 +174,3 @@ var progressRadiuses = [
174
174
  ];
175
175
  //#endregion
176
176
  export { progress_default as i, progressRadiuses as n, progressSizes as r, progressColors as t };
177
-
178
- //# sourceMappingURL=progress.js.map
package/dist/radio.js CHANGED
@@ -190,5 +190,3 @@ var radio_group_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
190
190
  }), [["__scopeId", "data-v-a2c46e46"]]);
191
191
  //#endregion
192
192
  export { radio_default as n, radio_group_default as t };
193
-
194
- //# sourceMappingURL=radio.js.map
package/dist/select.js CHANGED
@@ -376,5 +376,3 @@ var select_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
376
376
  }), [["__scopeId", "data-v-9838513c"]]);
377
377
  //#endregion
378
378
  export { select_default as t };
379
-
380
- //# sourceMappingURL=select.js.map
package/dist/slider.js CHANGED
@@ -409,5 +409,3 @@ var slider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
409
409
  }), [["__scopeId", "data-v-c9655b1d"]]);
410
410
  //#endregion
411
411
  export { sliderSizes as i, sliderColors as n, sliderOrientations as r, slider_default as t };
412
-
413
- //# sourceMappingURL=slider.js.map
package/dist/switch.js CHANGED
@@ -104,5 +104,3 @@ var switch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
104
104
  }), [["__scopeId", "data-v-e9d95947"]]);
105
105
  //#endregion
106
106
  export { switch_default as t };
107
-
108
- //# sourceMappingURL=switch.js.map
package/dist/tabs.js CHANGED
@@ -511,5 +511,3 @@ var tabs_trigger_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
511
511
  }), [["__scopeId", "data-v-4adec360"]]);
512
512
  //#endregion
513
513
  export { useTabs as a, useTabsTrigger as c, tabs_default as i, tabs_list_default as n, useTabsContent as o, tabs_content_default as r, useTabsList as s, tabs_trigger_default as t };
514
-
515
- //# sourceMappingURL=tabs.js.map
package/dist/textarea.js CHANGED
@@ -207,5 +207,3 @@ var textarea_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
207
207
  }), [["__scopeId", "data-v-6c62dc31"]]);
208
208
  //#endregion
209
209
  export { textarea_default as t };
210
-
211
- //# sourceMappingURL=textarea.js.map
package/dist/tooltip.js CHANGED
@@ -381,5 +381,3 @@ var tooltip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
381
381
  }), [["__scopeId", "data-v-13c39164"]]);
382
382
  //#endregion
383
383
  export { useDelayedOpen as n, tooltip_default as t };
384
-
385
- //# sourceMappingURL=tooltip.js.map
@@ -29,5 +29,3 @@ function getButtonColorStyle(color) {
29
29
  }
30
30
  //#endregion
31
31
  export { loader_circle_default as n, getButtonColorStyle as t };
32
-
33
- //# sourceMappingURL=useButtonColor.js.map
@@ -22,5 +22,3 @@ function useClickOutside(target, active, callback) {
22
22
  }
23
23
  //#endregion
24
24
  export { useClickOutside as t };
25
-
26
- //# sourceMappingURL=useClickOutside.js.map
@@ -7,7 +7,7 @@ function optionValue(value) {
7
7
  }
8
8
  function useCollapse(options = {}, emitOpenChange) {
9
9
  const generatedId = useId();
10
- const uncontrolledOpen = ref(Boolean(optionValue(options.defaultOpen)));
10
+ const uncontrolledOpen = ref(false);
11
11
  const id = computed(() => optionValue(options.id) ?? `${generatedId}-collapse`);
12
12
  const controlledOpen = computed(() => optionValue(options.open));
13
13
  const isDisabled = computed(() => Boolean(optionValue(options.disabled)));
@@ -90,5 +90,3 @@ function useCollapse(options = {}, emitOpenChange) {
90
90
  }
91
91
  //#endregion
92
92
  export { useCollapse as t };
93
-
94
- //# sourceMappingURL=useCollapse.js.map
@@ -38,5 +38,3 @@ function useControlState(options = {}) {
38
38
  }
39
39
  //#endregion
40
40
  export { useControlState as t };
41
-
42
- //# sourceMappingURL=useControlState.js.map
@@ -7,5 +7,3 @@ function useRequiredInject(key, componentName) {
7
7
  }
8
8
  //#endregion
9
9
  export { useRequiredInject as t };
10
-
11
- //# sourceMappingURL=useRequiredInject.js.map
package/dist/x.js CHANGED
@@ -10,5 +10,3 @@ var x_default = markRaw(defineVaporComponent({
10
10
  }));
11
11
  //#endregion
12
12
  export { x_default as t };
13
-
14
- //# sourceMappingURL=x.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ropav",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "type": "module",
5
5
  "packageManager": "pnpm@11.10.0",
6
6
  "engines": {
@@ -133,7 +133,9 @@
133
133
  "preview": "vite preview",
134
134
  "storybook": "pnpm run tokens:build && storybook dev -p 6006 --no-open",
135
135
  "build-storybook": "pnpm run tokens:build && pnpm run tokens:check && pnpm run typecheck:storybook && storybook build",
136
- "release": "bumpp"
136
+ "changelog": "conventional-changelog -p conventionalcommits -i CHANGELOG.md -o CHANGELOG.md",
137
+ "changelog:all": "conventional-changelog -p conventionalcommits -i CHANGELOG.md -o CHANGELOG.md -r 0",
138
+ "release": "bumpp --git-check --all --commit \"chore(release): v%s\" --tag \"v%s\" --execute \"pnpm run changelog\""
137
139
  },
138
140
  "peerDependencies": {
139
141
  "vue": "^3.6.0-beta.4"
@@ -149,6 +151,8 @@
149
151
  "@vue/compiler-vapor": "3.6.0-beta.17",
150
152
  "@vue/tsconfig": "^0.9.1",
151
153
  "bumpp": "^11.1.0",
154
+ "conventional-changelog": "^7.2.1",
155
+ "conventional-changelog-conventionalcommits": "^9.3.1",
152
156
  "jsdom": "^29.1.1",
153
157
  "oxfmt": "^0.57.0",
154
158
  "oxlint": "^1.72.0",
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.js","names":[],"sources":["../src/components/accordion/types.ts","../src/components/accordion/useAccordion.ts","../src/components/accordion/accordion.vue","../src/components/accordion/accordion.vue","../src/components/accordion/accordion-item.vue","../src/components/accordion/accordion-item.vue"],"sourcesContent":["import type { ComputedRef, InjectionKey } from 'vue';\nimport type {\n CollapseContentProps,\n CollapseContentRole,\n CollapseTriggerProps,\n} from '../collapse/types';\n\nexport type AccordionItemValue = string | number;\n\nexport type AccordionModelValue = AccordionItemValue | AccordionItemValue[] | null;\n\nexport type AccordionOrientation = 'vertical' | 'horizontal';\n\nexport type AccordionState = 'open' | 'closed';\n\nexport interface AccordionProps {\n id?: string;\n modelValue?: AccordionModelValue;\n defaultValue?: AccordionModelValue;\n multiple?: boolean;\n collapsible?: boolean;\n disabled?: boolean;\n unmountOnExit?: boolean;\n orientation?: AccordionOrientation;\n ariaLabel?: string;\n describedby?: string;\n labelledby?: string;\n}\n\nexport interface AccordionItemProps {\n id?: string;\n value: AccordionItemValue;\n title?: string;\n disabled?: boolean;\n unmountOnExit?: boolean;\n role?: CollapseContentRole;\n ariaLabel?: string;\n ariaDescribedby?: string;\n ariaLabelledby?: string;\n}\n\nexport interface AccordionRootProps {\n id?: string;\n class: string[];\n 'data-disabled'?: boolean;\n 'data-orientation': AccordionOrientation;\n 'aria-label'?: string;\n 'aria-labelledby'?: string;\n 'aria-describedby'?: string;\n onKeydown: (event: KeyboardEvent) => void;\n}\n\nexport interface AccordionItemRootProps {\n id: string;\n class: string[];\n 'data-state': AccordionState;\n 'data-disabled'?: boolean;\n}\n\nexport interface AccordionTriggerProps extends CollapseTriggerProps {\n id: string;\n class: string;\n 'aria-disabled'?: boolean;\n}\n\nexport interface AccordionContentProps extends CollapseContentProps {\n class: string;\n}\n\nexport interface AccordionItemSlotProps {\n value: AccordionItemValue;\n isOpen: boolean;\n disabled: boolean;\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\nexport interface AccordionItemTriggerSlotProps extends AccordionItemSlotProps {\n triggerProps: AccordionTriggerProps;\n}\n\nexport interface AccordionContext {\n multiple: boolean;\n collapsible: boolean;\n disabled: boolean;\n unmountOnExit: boolean;\n orientation: AccordionOrientation;\n isItemOpen: (value: AccordionItemValue) => boolean;\n setItemOpen: (value: AccordionItemValue, open: boolean) => void;\n}\n\nexport interface UseAccordionReturn {\n rootClass: ComputedRef<string[]>;\n rootProps: ComputedRef<AccordionRootProps>;\n openValues: ComputedRef<AccordionItemValue[]>;\n setItemOpen: (value: AccordionItemValue, open: boolean) => void;\n}\n\nexport interface UseAccordionItemReturn {\n group: AccordionContext;\n id: ComputedRef<string>;\n triggerId: ComputedRef<string>;\n contentId: ComputedRef<string>;\n state: ComputedRef<AccordionState>;\n isOpen: ComputedRef<boolean>;\n isDisabled: ComputedRef<boolean>;\n shouldRenderContent: ComputedRef<boolean>;\n rootClass: ComputedRef<string[]>;\n rootProps: ComputedRef<AccordionItemRootProps>;\n triggerProps: ComputedRef<AccordionTriggerProps>;\n contentProps: ComputedRef<AccordionContentProps>;\n triggerSlotProps: ComputedRef<AccordionItemTriggerSlotProps>;\n contentSlotProps: ComputedRef<AccordionItemSlotProps>;\n open: () => void;\n close: () => void;\n toggle: () => void;\n}\n\nexport const accordionKey = Symbol('accordion') as InjectionKey<AccordionContext>;\n","import { computed, provide, ref, useId } from 'vue';\nimport { useRequiredInject } from '@/composables/useRequiredInject';\nimport { bem } from '@/utils/bem';\nimport { useCollapse } from '../collapse/useCollapse';\nimport { accordionKey } from './types';\nimport type {\n AccordionContentProps,\n AccordionContext,\n AccordionItemProps,\n AccordionItemRootProps,\n AccordionItemSlotProps,\n AccordionItemTriggerSlotProps,\n AccordionItemValue,\n AccordionModelValue,\n AccordionOrientation,\n AccordionProps,\n AccordionRootProps,\n AccordionState,\n AccordionTriggerProps,\n UseAccordionItemReturn,\n UseAccordionReturn,\n} from './types';\n\nconst ACCORDION_SELECTOR = '.rp-accordion';\nconst TRIGGER_SELECTOR = '.rp-accordion-item__trigger';\n\nfunction normalizeValue(value: AccordionModelValue | undefined, multiple: boolean) {\n if (value == null) return [];\n const values = Array.isArray(value) ? value : [value];\n return multiple ? values : values.slice(0, 1);\n}\n\nfunction toModelValue(values: AccordionItemValue[], multiple: boolean): AccordionModelValue {\n return multiple ? [...values] : (values[0] ?? null);\n}\n\nfunction hasValue(values: AccordionItemValue[], value: AccordionItemValue) {\n return values.some((itemValue) => itemValue === value);\n}\n\nfunction withoutValue(values: AccordionItemValue[], value: AccordionItemValue) {\n return values.filter((itemValue) => itemValue !== value);\n}\n\ntype NavigationDirection = 1 | -1;\n\nconst ORIENTATION_NAVIGATION_KEYS: Record<\n AccordionOrientation,\n Partial<Record<string, NavigationDirection>>\n> = {\n vertical: {\n ArrowDown: 1,\n ArrowUp: -1,\n },\n horizontal: {\n ArrowRight: 1,\n ArrowLeft: -1,\n },\n};\n\nfunction getAccordionTrigger(event: KeyboardEvent, root: HTMLElement) {\n const target = event.target;\n if (!(target instanceof Element)) return undefined;\n\n const trigger = target.closest<HTMLButtonElement>(TRIGGER_SELECTOR);\n if (!trigger || trigger.closest(ACCORDION_SELECTOR) !== root) return undefined;\n\n return trigger;\n}\n\nfunction getAccordionTriggers(root: HTMLElement) {\n return Array.from(root.querySelectorAll<HTMLButtonElement>(TRIGGER_SELECTOR)).filter(\n (trigger) => trigger.closest(ACCORDION_SELECTOR) === root && !trigger.disabled,\n );\n}\n\nfunction getNextTrigger(\n root: HTMLElement,\n currentTrigger: HTMLButtonElement,\n key: string,\n orientation: AccordionOrientation,\n) {\n const triggers = getAccordionTriggers(root);\n const currentIndex = triggers.indexOf(currentTrigger);\n if (currentIndex === -1 || triggers.length === 0) return undefined;\n\n if (key === 'Home') return triggers[0];\n if (key === 'End') return triggers[triggers.length - 1];\n\n const direction = ORIENTATION_NAVIGATION_KEYS[orientation][key];\n if (!direction) return undefined;\n\n return triggers[(currentIndex + direction + triggers.length) % triggers.length];\n}\n\nexport function useAccordion(\n props: Readonly<AccordionProps>,\n emitUpdate: (value: AccordionModelValue) => void,\n): UseAccordionReturn {\n const isMultiple = computed(() => Boolean(props.multiple));\n const isCollapsible = computed(() => props.collapsible !== false);\n const isDisabled = computed(() => Boolean(props.disabled));\n const orientation = computed(() => props.orientation ?? 'vertical');\n const isControlled = computed(() => props.modelValue !== undefined);\n const uncontrolledValue = ref<AccordionModelValue>(props.defaultValue ?? null);\n\n const openValues = computed(() =>\n normalizeValue(\n isControlled.value ? props.modelValue : uncontrolledValue.value,\n isMultiple.value,\n ),\n );\n\n const rootClass = computed(() =>\n bem('rp-accordion', {\n disabled: isDisabled.value,\n multiple: isMultiple.value,\n [`${orientation.value}`]: true,\n }),\n );\n\n const rootProps = computed<AccordionRootProps>(() => ({\n id: props.id,\n class: rootClass.value,\n 'data-disabled': isDisabled.value || undefined,\n 'data-orientation': orientation.value,\n 'aria-label': props.ariaLabel || undefined,\n 'aria-labelledby': props.labelledby || undefined,\n 'aria-describedby': props.describedby || undefined,\n onKeydown: onRootKeydown,\n }));\n\n function setValues(nextValues: AccordionItemValue[]) {\n const nextModelValue = toModelValue(nextValues, isMultiple.value);\n\n if (!isControlled.value) uncontrolledValue.value = nextModelValue;\n emitUpdate(nextModelValue);\n }\n\n function setItemOpen(value: AccordionItemValue, open: boolean) {\n if (isDisabled.value) return;\n\n const values = openValues.value;\n const itemIsOpen = hasValue(values, value);\n if (itemIsOpen === open) return;\n if (!open && !isCollapsible.value) return;\n\n if (isMultiple.value) {\n setValues(open ? [...values, value] : withoutValue(values, value));\n return;\n }\n\n setValues(open ? [value] : []);\n }\n\n function onRootKeydown(event: KeyboardEvent) {\n const root = event.currentTarget as HTMLElement | null;\n if (!root) return;\n\n const trigger = getAccordionTrigger(event, root);\n if (!trigger) return;\n\n const nextTrigger = getNextTrigger(root, trigger, event.key, orientation.value);\n if (!nextTrigger) return;\n\n event.preventDefault();\n nextTrigger.focus();\n }\n\n provide<AccordionContext>(accordionKey, {\n get multiple() {\n return isMultiple.value;\n },\n get collapsible() {\n return isCollapsible.value;\n },\n get disabled() {\n return isDisabled.value;\n },\n get unmountOnExit() {\n return Boolean(props.unmountOnExit);\n },\n get orientation() {\n return orientation.value;\n },\n isItemOpen(value) {\n return hasValue(openValues.value, value);\n },\n setItemOpen,\n });\n\n return {\n rootClass,\n rootProps,\n openValues,\n setItemOpen,\n };\n}\n\nexport function useAccordionItem(props: Readonly<AccordionItemProps>): UseAccordionItemReturn {\n const group = useRequiredInject(accordionKey, 'RpAccordionItem');\n const generatedId = useId();\n\n const id = computed(() => props.id ?? `${generatedId}-accordion-item`);\n const triggerId = computed(() => `${id.value}-trigger`);\n const contentId = computed(() => `${id.value}-content`);\n const isOpen = computed(() => group.isItemOpen(props.value));\n const isDisabled = computed(() => Boolean(group.disabled || props.disabled));\n const shouldUnmountOnExit = computed(() => props.unmountOnExit ?? group.unmountOnExit);\n const state = computed<AccordionState>(() => (isOpen.value ? 'open' : 'closed'));\n const triggerAriaDisabled = computed(\n () => isDisabled.value || (!group.collapsible && isOpen.value),\n );\n\n const collapse = useCollapse(\n {\n id: contentId,\n open: isOpen,\n disabled: isDisabled,\n unmountOnExit: shouldUnmountOnExit,\n role: () => props.role ?? 'region',\n ariaLabel: () => props.ariaLabel,\n ariaDescribedby: () => props.ariaDescribedby,\n ariaLabelledby: () => props.ariaLabelledby ?? triggerId.value,\n },\n (nextOpen) => {\n setOpen(nextOpen);\n },\n );\n\n const rootClass = computed(() =>\n bem('rp-accordion-item', {\n open: isOpen.value,\n closed: !isOpen.value,\n disabled: isDisabled.value,\n [`${group.orientation}`]: true,\n }),\n );\n\n const rootProps = computed<AccordionItemRootProps>(() => ({\n id: id.value,\n class: rootClass.value,\n 'data-state': state.value,\n 'data-disabled': isDisabled.value || undefined,\n }));\n\n const triggerProps = computed<AccordionTriggerProps>(() => ({\n ...collapse.triggerProps.value,\n id: triggerId.value,\n class: 'rp-accordion-item__trigger',\n 'aria-controls': contentId.value,\n 'aria-expanded': isOpen.value,\n 'aria-disabled': triggerAriaDisabled.value || undefined,\n disabled: isDisabled.value || undefined,\n onClick: onTriggerClick,\n }));\n\n const contentProps = computed<AccordionContentProps>(() => ({\n ...collapse.contentProps.value,\n class: 'rp-accordion-item__content',\n id: contentId.value,\n 'aria-labelledby': props.ariaLabelledby ?? triggerId.value,\n }));\n\n const contentSlotProps = computed<AccordionItemSlotProps>(() => ({\n value: props.value,\n isOpen: isOpen.value,\n disabled: isDisabled.value,\n open,\n close,\n toggle,\n }));\n\n const triggerSlotProps = computed<AccordionItemTriggerSlotProps>(() => ({\n triggerProps: triggerProps.value,\n ...contentSlotProps.value,\n }));\n\n function open() {\n setOpen(true);\n }\n\n function close() {\n setOpen(false);\n }\n\n function toggle() {\n setOpen(!isOpen.value);\n }\n\n function setOpen(nextOpen: boolean) {\n if (isDisabled.value) return;\n group.setItemOpen(props.value, nextOpen);\n }\n\n function onTriggerClick() {\n toggle();\n }\n\n return {\n group,\n id,\n triggerId,\n contentId,\n state,\n isOpen,\n isDisabled,\n shouldRenderContent: collapse.shouldRenderContent,\n rootClass,\n rootProps,\n triggerProps,\n contentProps,\n triggerSlotProps,\n contentSlotProps,\n open,\n close,\n toggle,\n };\n}\n","<template>\n <div v-bind=\"rootProps\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { useAccordion } from './useAccordion';\nimport type { AccordionModelValue, AccordionProps } from './types';\n\ndefineOptions({ name: 'RpAccordion' });\n\nconst props = withDefaults(defineProps<AccordionProps>(), {\n modelValue: undefined,\n defaultValue: undefined,\n multiple: false,\n collapsible: true,\n disabled: false,\n unmountOnExit: false,\n orientation: 'vertical',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: AccordionModelValue];\n}>();\n\nconst { rootProps } = useAccordion(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./accordion.scss\" lang=\"scss\" scoped></style>\n","<template>\n <div v-bind=\"rootProps\">\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { useAccordion } from './useAccordion';\nimport type { AccordionModelValue, AccordionProps } from './types';\n\ndefineOptions({ name: 'RpAccordion' });\n\nconst props = withDefaults(defineProps<AccordionProps>(), {\n modelValue: undefined,\n defaultValue: undefined,\n multiple: false,\n collapsible: true,\n disabled: false,\n unmountOnExit: false,\n orientation: 'vertical',\n});\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: AccordionModelValue];\n}>();\n\nconst { rootProps } = useAccordion(props, (value) => {\n emit('update:modelValue', value);\n});\n</script>\n\n<style src=\"./accordion.scss\" lang=\"scss\" scoped></style>\n","<template>\n <div v-bind=\"rootProps\">\n <h3 class=\"rp-accordion-item__heading\">\n <slot name=\"trigger\" v-bind=\"triggerSlotProps\">\n <button v-bind=\"triggerProps\">\n <span class=\"rp-accordion-item__title\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n <span class=\"rp-accordion-item__icon\" aria-hidden=\"true\">\n <IconChevronDown />\n </span>\n </button>\n </slot>\n </h3>\n\n <Transition name=\"rp-accordion-content\">\n <section v-if=\"shouldRenderContent\" v-show=\"isOpen\" v-bind=\"contentProps\">\n <div class=\"rp-accordion-item__inner\">\n <slot v-bind=\"contentSlotProps\" />\n </div>\n </section>\n </Transition>\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport IconChevronDown from '~icons/lucide/chevron-down';\nimport { useAccordionItem } from './useAccordion';\nimport type { AccordionItemProps } from './types';\n\ndefineOptions({ name: 'RpAccordionItem' });\n\nconst props = withDefaults(defineProps<AccordionItemProps>(), {\n title: '',\n disabled: false,\n unmountOnExit: undefined,\n role: 'region',\n});\n\nconst {\n rootProps,\n triggerProps,\n contentProps,\n triggerSlotProps,\n contentSlotProps,\n isOpen,\n shouldRenderContent,\n} = useAccordionItem(props);\n</script>\n\n<style src=\"./accordion-item.scss\" lang=\"scss\" scoped></style>\n","<template>\n <div v-bind=\"rootProps\">\n <h3 class=\"rp-accordion-item__heading\">\n <slot name=\"trigger\" v-bind=\"triggerSlotProps\">\n <button v-bind=\"triggerProps\">\n <span class=\"rp-accordion-item__title\">\n <slot name=\"title\">{{ title }}</slot>\n </span>\n <span class=\"rp-accordion-item__icon\" aria-hidden=\"true\">\n <IconChevronDown />\n </span>\n </button>\n </slot>\n </h3>\n\n <Transition name=\"rp-accordion-content\">\n <section v-if=\"shouldRenderContent\" v-show=\"isOpen\" v-bind=\"contentProps\">\n <div class=\"rp-accordion-item__inner\">\n <slot v-bind=\"contentSlotProps\" />\n </div>\n </section>\n </Transition>\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport IconChevronDown from '~icons/lucide/chevron-down';\nimport { useAccordionItem } from './useAccordion';\nimport type { AccordionItemProps } from './types';\n\ndefineOptions({ name: 'RpAccordionItem' });\n\nconst props = withDefaults(defineProps<AccordionItemProps>(), {\n title: '',\n disabled: false,\n unmountOnExit: undefined,\n role: 'region',\n});\n\nconst {\n rootProps,\n triggerProps,\n contentProps,\n triggerSlotProps,\n contentSlotProps,\n isOpen,\n shouldRenderContent,\n} = useAccordionItem(props);\n</script>\n\n<style src=\"./accordion-item.scss\" lang=\"scss\" scoped></style>\n"],"mappings":"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"}
package/dist/badge.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"badge.js","names":[],"sources":["../src/components/badge/useBadgeColor.ts","../src/components/badge/badge.vue","../src/components/badge/badge.vue","../src/components/badge/types.ts"],"sourcesContent":["import type { CSSProperties } from 'vue';\nimport { getComponentCustomColor } from '@/utils/componentColors';\nimport type { BadgeColor } from './types';\n\nexport function getBadgeColorStyle(color: BadgeColor | undefined) {\n const customColor = getComponentCustomColor(color);\n if (!customColor) return undefined;\n\n return {\n '--_rp-badge-custom-color': customColor,\n '--_rp-badge-custom-fg': customColor,\n '--_rp-badge-custom-on': 'var(--rp-color-on-primary)',\n '--_rp-badge-custom-subtle-bg': `color-mix(in srgb, ${customColor} 12%, transparent)`,\n '--_rp-badge-custom-border': `color-mix(in srgb, ${customColor} 45%, transparent)`,\n } satisfies CSSProperties;\n}\n","<template>\n <span :class=\"rootClass\" :style=\"rootStyle\" :aria-label=\"ariaLabel || undefined\">\n <span v-if=\"$slots.left\" class=\"rp-badge__left\">\n <slot name=\"left\" />\n </span>\n <span v-if=\"$slots.default\" class=\"rp-badge__label\">\n <slot />\n </span>\n <span v-if=\"$slots.right\" class=\"rp-badge__right\">\n <slot name=\"right\" />\n </span>\n </span>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport { isComponentPresetColor } from '@/utils/componentColors';\nimport type { BadgeProps } from './types';\nimport { getBadgeColorStyle } from './useBadgeColor';\n\ndefineOptions({ name: 'RpBadge' });\n\nconst props = defineProps<BadgeProps>();\n\nconst rootClass = computed(() =>\n bem('rp-badge', {\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: isComponentPresetColor(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n }),\n);\n\nconst rootStyle = computed(() => getBadgeColorStyle(props.color));\n</script>\n\n<style src=\"./badge.scss\" lang=\"scss\" scoped></style>\n","<template>\n <span :class=\"rootClass\" :style=\"rootStyle\" :aria-label=\"ariaLabel || undefined\">\n <span v-if=\"$slots.left\" class=\"rp-badge__left\">\n <slot name=\"left\" />\n </span>\n <span v-if=\"$slots.default\" class=\"rp-badge__label\">\n <slot />\n </span>\n <span v-if=\"$slots.right\" class=\"rp-badge__right\">\n <slot name=\"right\" />\n </span>\n </span>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport { isComponentPresetColor } from '@/utils/componentColors';\nimport type { BadgeProps } from './types';\nimport { getBadgeColorStyle } from './useBadgeColor';\n\ndefineOptions({ name: 'RpBadge' });\n\nconst props = defineProps<BadgeProps>();\n\nconst rootClass = computed(() =>\n bem('rp-badge', {\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: isComponentPresetColor(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n }),\n);\n\nconst rootStyle = computed(() => getBadgeColorStyle(props.color));\n</script>\n\n<style src=\"./badge.scss\" lang=\"scss\" scoped></style>\n","import { componentColors, type ComponentColorValue } from '../../utils/componentColors';\n\nexport const badgeColors = componentColors;\n\nexport const badgeSizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const;\n\nexport const badgeRadiuses = ['none', 'xs', 'sm', 'md', 'lg', 'xl', 'full'] as const;\n\nexport const badgeVariants = ['solid', 'subtle', 'surface', 'outline'] as const;\n\nexport type BadgeColor = ComponentColorValue;\n\nexport type BadgeSize = (typeof badgeSizes)[number];\n\nexport type BadgeRadius = (typeof badgeRadiuses)[number];\n\nexport type BadgeVariant = (typeof badgeVariants)[number];\n\nexport interface BadgeProps {\n variant?: BadgeVariant;\n color?: BadgeColor;\n size?: BadgeSize;\n radius?: BadgeRadius;\n ariaLabel?: string;\n}\n"],"mappings":";;;;;AAIA,SAAgB,mBAAmB,OAA+B;CAC9D,MAAM,cAAc,wBAAwB,KAAK;CACjD,IAAI,CAAC,aAAa,OAAO,KAAA;CAEzB,OAAO;EACH,4BAA4B;EAC5B,yBAAyB;EACzB,yBAAyB;EACzB,gCAAgC,sBAAsB,YAAY;EAClE,6BAA6B,sBAAsB,YAAY;CACnE;AACJ;;;;;;;;;;;;;;;;;;;;ECQA,MAAM,QAAQ;EAEd,MAAM,YAAY,eACd,IAAI,YAAY;IACX,MAAM,WAAW,KAAK,QAAQ,MAAM,OAAO;IAC3C,SAAS,MAAM,UAAU,uBAAuB,MAAM,KAAK;IAC3D,QAAQ,MAAM,SAAS,QAAQ,MAAM,IAAI;IACzC,UAAU,MAAM,WAAW,QAAQ,MAAM,MAAM;EACpD,CAAC,CACL;EAEA,MAAM,YAAY,eAAe,mBAAmB,MAAM,KAAK,CAAC;;;iBAjC9C,UAAA,KAAS;iBAAU,UAAA,KAAS;gBAAG,cAAY,QAAA,aAAa,KAAA,CAAS;;;iBAC/D,OAAM,YAAA;;;cACR,QAAW,MAAA,MAAA,CAAA;;;;iBAET,OAAM,eAAA;;;;;;;iBAGN,OAAM,aAAA;;;cACR,SAAY,MAAA,MAAA,CAAA;;;;;;;;AEP9B,IAAa,cAAc;AAE3B,IAAa,aAAa;CAAC;CAAM;CAAM;CAAM;CAAM;AAAI;AAEvD,IAAa,gBAAgB;CAAC;CAAQ;CAAM;CAAM;CAAM;CAAM;CAAM;AAAM;AAE1E,IAAa,gBAAgB;CAAC;CAAS;CAAU;CAAW;AAAS"}
package/dist/bem.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"bem.js","names":[],"sources":["../src/utils/bem.ts"],"sourcesContent":["type BemModifier = string | Record<string, boolean | undefined>;\n\nexport function bem(block: string, ...modifiers: BemModifier[]): string[] {\n const classes = [block];\n for (const mod of modifiers) {\n if (typeof mod === 'string') {\n classes.push(`${block}--${mod}`);\n } else {\n for (const [key, val] of Object.entries(mod)) {\n if (val) classes.push(`${block}--${key}`);\n }\n }\n }\n return classes;\n}\n"],"mappings":";AAEA,SAAgB,IAAI,OAAe,GAAG,WAAoC;CACtE,MAAM,UAAU,CAAC,KAAK;CACtB,KAAK,MAAM,OAAO,WACd,IAAI,OAAO,QAAQ,UACf,QAAQ,KAAK,GAAG,MAAM,IAAI,KAAK;MAE/B,KAAK,MAAM,CAAC,KAAK,QAAQ,OAAO,QAAQ,GAAG,GACvC,IAAI,KAAK,QAAQ,KAAK,GAAG,MAAM,IAAI,KAAK;CAIpD,OAAO;AACX"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button-group.js","names":[],"sources":["../src/components/button-group/button-group.vue","../src/components/button-group/button-group.vue"],"sourcesContent":["<template>\n <div\n :id=\"id\"\n :class=\"rootClass\"\n role=\"group\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"labelledby\"\n :aria-describedby=\"describedby\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { ButtonGroupProps } from './types';\n\ndefineOptions({ name: 'RpButtonGroup' });\n\nconst props = withDefaults(defineProps<ButtonGroupProps>(), {\n orientation: 'horizontal',\n attached: false,\n wrap: false,\n});\n\nconst rootClass = computed(() =>\n bem('rp-button-group', {\n vertical: props.orientation === 'vertical',\n attached: props.attached,\n wrap: props.wrap,\n }),\n);\n</script>\n\n<style src=\"./button-group.scss\" lang=\"scss\" scoped></style>\n","<template>\n <div\n :id=\"id\"\n :class=\"rootClass\"\n role=\"group\"\n :aria-label=\"ariaLabel || undefined\"\n :aria-labelledby=\"labelledby\"\n :aria-describedby=\"describedby\"\n >\n <slot />\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { ButtonGroupProps } from './types';\n\ndefineOptions({ name: 'RpButtonGroup' });\n\nconst props = withDefaults(defineProps<ButtonGroupProps>(), {\n orientation: 'horizontal',\n attached: false,\n wrap: false,\n});\n\nconst rootClass = computed(() =>\n bem('rp-button-group', {\n vertical: props.orientation === 'vertical',\n attached: props.attached,\n wrap: props.wrap,\n }),\n);\n</script>\n\n<style src=\"./button-group.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA,MAAM,QAAQ;EAMd,MAAM,YAAY,eACd,IAAI,mBAAmB;GACnB,UAAU,MAAM,gBAAgB;GAChC,UAAU,MAAM;GAChB,MAAM,MAAM;EAChB,CAAC,CACL;;;eA9BS,MAAI,QAAA,EAAE;gBACC,UAAA,KAAS;eAEhB,cAAY,QAAA,aAAa,KAAA,CAAS;eAClC,mBAAiB,QAAA,UAAU;eAC3B,oBAAkB,QAAA,WAAW"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"button.js","names":[],"sources":["../src/components/button/button.vue","../src/components/button/button.vue"],"sourcesContent":["<template>\n <button\n :class=\"rootClass\"\n :style=\"rootStyle\"\n :disabled=\"disabled || loading || undefined\"\n :type=\"type\"\n :aria-busy=\"loading || undefined\"\n >\n <span v-if=\"loading\" class=\"rp-button__loading\" aria-hidden=\"true\">\n <slot name=\"loading\">\n <IconLoaderCircle class=\"rp-button__spinner\" />\n </slot>\n </span>\n <span class=\"rp-button__content\" :aria-hidden=\"loading || undefined\">\n <span v-if=\"$slots.left\" class=\"rp-button__left\">\n <slot name=\"left\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.right\" class=\"rp-button__right\">\n <slot name=\"right\" />\n </span>\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport IconLoaderCircle from '~icons/lucide/loader-circle';\nimport { isComponentPresetColor } from '@/utils/componentColors';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\nimport { getButtonColorStyle } from './useButtonColor';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst rootClass = computed(() =>\n bem('rp-button', {\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: isComponentPresetColor(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n loading: props.loading,\n }),\n);\n\nconst rootStyle = computed(() => getButtonColorStyle(props.color));\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n","<template>\n <button\n :class=\"rootClass\"\n :style=\"rootStyle\"\n :disabled=\"disabled || loading || undefined\"\n :type=\"type\"\n :aria-busy=\"loading || undefined\"\n >\n <span v-if=\"loading\" class=\"rp-button__loading\" aria-hidden=\"true\">\n <slot name=\"loading\">\n <IconLoaderCircle class=\"rp-button__spinner\" />\n </slot>\n </span>\n <span class=\"rp-button__content\" :aria-hidden=\"loading || undefined\">\n <span v-if=\"$slots.left\" class=\"rp-button__left\">\n <slot name=\"left\" />\n </span>\n <span class=\"rp-button__label\">\n <slot />\n </span>\n <span v-if=\"$slots.right\" class=\"rp-button__right\">\n <slot name=\"right\" />\n </span>\n </span>\n </button>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport IconLoaderCircle from '~icons/lucide/loader-circle';\nimport { isComponentPresetColor } from '@/utils/componentColors';\nimport { bem } from '@/utils/bem';\nimport type { ButtonProps } from './types';\nimport { getButtonColorStyle } from './useButtonColor';\n\ndefineOptions({ name: 'RpButton' });\n\nconst props = withDefaults(defineProps<ButtonProps>(), {\n type: 'button',\n disabled: false,\n loading: false,\n});\n\nconst rootClass = computed(() =>\n bem('rp-button', {\n [props.variant ?? '']: Boolean(props.variant),\n [`color-${props.color}`]: isComponentPresetColor(props.color),\n [`size-${props.size}`]: Boolean(props.size),\n [`radius-${props.radius}`]: Boolean(props.radius),\n loading: props.loading,\n }),\n);\n\nconst rootStyle = computed(() => getButtonColorStyle(props.color));\n</script>\n\n<style src=\"./button.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqCA,MAAM,QAAQ;EAMd,MAAM,YAAY,eACd,IAAI,aAAa;IACZ,MAAM,WAAW,KAAK,QAAQ,MAAM,OAAO;IAC3C,SAAS,MAAM,UAAU,uBAAuB,MAAM,KAAK;IAC3D,QAAQ,MAAM,SAAS,QAAQ,MAAM,IAAI;IACzC,UAAU,MAAM,WAAW,QAAQ,MAAM,MAAM;GAChD,SAAS,MAAM;EACnB,CAAC,CACL;EAEA,MAAM,YAAY,eAAe,oBAAoB,MAAM,KAAK,CAAC;;;;;;iBAnDjD,UAAA,KAAS;iBACT,UAAA,KAAS;gBAChB,YAAU,QAAA,YAAY,YAAW,KAAA,CAAS;gBAC1C,QAAM,QAAA,IAAI;gBACV,aAAW,YAAW,KAAA,CAAS;;;iBAEpB,QAAA,eAAO;;;cACT,WAAc,YAAA;2DACE,OAAM,qBAAoB,CAAA;;;;kCAGlB,eAAa,QAAA,WAAW,KAAA,CAAS,CAAA;;iBACnD,OAAM,YAAA;;;cACR,QAAW,MAAA,MAAA,CAAA;;;;;;iBAKT,OAAM,aAAA;;;cACR,SAAY,MAAA,MAAA,CAAA"}
package/dist/card.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"card.js","names":[],"sources":["../src/components/card/card.vue","../src/components/card/card.vue"],"sourcesContent":["<template>\n <div :class=\"rootClass\">\n <div v-if=\"hasHeader\" class=\"rp-card__header\">\n <div v-if=\"hasTitle\" class=\"rp-card__title\">\n {{ title }}\n </div>\n <p v-if=\"hasDescription\" class=\"rp-card__description\">\n {{ description }}\n </p>\n </div>\n\n <div v-if=\"$slots.default\" class=\"rp-card__body\">\n <slot />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { CardProps } from './types';\n\ndefineOptions({ name: 'RpCard' });\n\nconst props = withDefaults(defineProps<CardProps>(), {\n border: true,\n title: '',\n description: '',\n});\n\nconst hasTitle = computed(() => Boolean(props.title));\nconst hasDescription = computed(() => Boolean(props.description));\nconst hasHeader = computed(() => Boolean(hasTitle.value || hasDescription.value));\n\nconst rootClass = computed(() =>\n bem('rp-card', {\n [`layer-${props.layer}`]: Boolean(props.layer),\n [`padding-${props.padding}`]: Boolean(props.padding),\n [`radius-${props.radius}`]: Boolean(props.radius),\n borderless: !props.border,\n }),\n);\n</script>\n\n<style src=\"./card.scss\" lang=\"scss\" scoped></style>\n","<template>\n <div :class=\"rootClass\">\n <div v-if=\"hasHeader\" class=\"rp-card__header\">\n <div v-if=\"hasTitle\" class=\"rp-card__title\">\n {{ title }}\n </div>\n <p v-if=\"hasDescription\" class=\"rp-card__description\">\n {{ description }}\n </p>\n </div>\n\n <div v-if=\"$slots.default\" class=\"rp-card__body\">\n <slot />\n </div>\n </div>\n</template>\n\n<script lang=\"ts\" setup vapor>\nimport { computed } from 'vue';\nimport { bem } from '@/utils/bem';\nimport type { CardProps } from './types';\n\ndefineOptions({ name: 'RpCard' });\n\nconst props = withDefaults(defineProps<CardProps>(), {\n border: true,\n title: '',\n description: '',\n});\n\nconst hasTitle = computed(() => Boolean(props.title));\nconst hasDescription = computed(() => Boolean(props.description));\nconst hasHeader = computed(() => Boolean(hasTitle.value || hasDescription.value));\n\nconst rootClass = computed(() =>\n bem('rp-card', {\n [`layer-${props.layer}`]: Boolean(props.layer),\n [`padding-${props.padding}`]: Boolean(props.padding),\n [`radius-${props.radius}`]: Boolean(props.radius),\n borderless: !props.border,\n }),\n);\n</script>\n\n<style src=\"./card.scss\" lang=\"scss\" scoped></style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAwBA,MAAM,QAAQ;EAMd,MAAM,WAAW,eAAe,QAAQ,MAAM,KAAK,CAAC;EACpD,MAAM,iBAAiB,eAAe,QAAQ,MAAM,WAAW,CAAC;EAChE,MAAM,YAAY,eAAe,QAAQ,SAAS,SAAS,eAAe,KAAK,CAAC;EAEhF,MAAM,YAAY,eACd,IAAI,WAAW;IACV,SAAS,MAAM,UAAU,QAAQ,MAAM,KAAK;IAC5C,WAAW,MAAM,YAAY,QAAQ,MAAM,OAAO;IAClD,UAAU,MAAM,WAAW,QAAQ,MAAM,MAAM;GAChD,YAAY,CAAC,MAAM;EACvB,CAAC,CACL;;mCAxCiB,UAAA,KAAS,CAAA;;iBACP,UAAA,aAAS;;;kBACL,SAAA,aAAQ;;;mDACZ,QAAA,KAAK,CAAA,CAAA;;;;kBAEH,eAAA,aAAc;;;mDAChB,QAAA,WAAW,CAAA,CAAA;;;;;;iBAIX,OAAM,eAAA"}