@robuust-digital/vue-components 2.0.0-rc.0 → 2.0.0-rc.10

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 (37) hide show
  1. package/CHANGELOG.md +246 -0
  2. package/dist/_shared/{ButtonBase-CQjlJ85F.js → ButtonBase-DfkwHIhN.js} +10 -10
  3. package/dist/_shared/Modal-DdpJnce6.js +200 -0
  4. package/dist/_shared/{Tooltip-BKXJoJ1x.js → Tooltip-B93ZF7IF.js} +16 -16
  5. package/dist/combobox/combobox.css +76 -34
  6. package/dist/combobox/index.js +46 -46
  7. package/dist/core/accordion.css +21 -10
  8. package/dist/core/alert.css +26 -20
  9. package/dist/core/badge.css +10 -10
  10. package/dist/core/button.css +31 -19
  11. package/dist/core/checkbox.css +35 -10
  12. package/dist/core/empty-state.css +6 -6
  13. package/dist/core/index.js +351 -347
  14. package/dist/core/input.css +23 -13
  15. package/dist/core/pagination.css +68 -9
  16. package/dist/core/radio.css +35 -10
  17. package/dist/core/select.css +25 -16
  18. package/dist/core/styles.css +5 -35
  19. package/dist/core/table.css +66 -5
  20. package/dist/core/tabs.css +20 -9
  21. package/dist/core/textarea.css +17 -10
  22. package/dist/core/utilities.css +12 -0
  23. package/dist/dialogs/drawer.css +140 -4
  24. package/dist/dialogs/index.js +100 -93
  25. package/dist/dialogs/modal.css +124 -22
  26. package/dist/dialogs/styles.css +20 -0
  27. package/dist/dropdown/dropdown.css +79 -49
  28. package/dist/dropdown/index.js +38 -38
  29. package/dist/lightswitch/lightswitch.css +19 -8
  30. package/dist/rich-text-editor/index.js +42 -39
  31. package/dist/rich-text-editor/rich-text.css +28 -10
  32. package/dist/toast/index.js +35 -34
  33. package/dist/toast/toast.css +54 -28
  34. package/dist/tooltip/index.js +1 -1
  35. package/dist/tooltip/tooltip.css +18 -16
  36. package/package.json +22 -8
  37. package/dist/_shared/Modal-COVlUEud.js +0 -193
@@ -1,6 +1,6 @@
1
- import { onMounted as p, watch as v, createBlock as i, openBlock as s, unref as r, withCtx as c, resolveDynamicComponent as u, normalizeClass as w, renderSlot as a, createElementVNode as m, createCommentVNode as d, toDisplayString as h, createElementBlock as $, createVNode as g } from "vue";
2
- import { TransitionRoot as C } from "@headlessui/vue";
3
- import { r as b } from "../_shared/XMarkIcon-90mcPzBs.js";
1
+ import { onMounted as y, watch as w, createBlock as n, openBlock as s, unref as r, withCtx as c, resolveDynamicComponent as m, normalizeClass as h, renderSlot as a, createElementVNode as u, createCommentVNode as f, toDisplayString as p, createElementBlock as C, createVNode as $ } from "vue";
2
+ import { TransitionRoot as b } from "@headlessui/vue";
3
+ import { r as g } from "../_shared/XMarkIcon-90mcPzBs.js";
4
4
  const k = { class: "rvc-toast-title" }, V = {
5
5
  __name: "Toast",
6
6
  props: {
@@ -39,52 +39,53 @@ const k = { class: "rvc-toast-title" }, V = {
39
39
  }
40
40
  },
41
41
  emits: ["toast:close"],
42
- setup(t, { emit: f }) {
43
- const e = t, y = f, n = () => {
44
- e.timeout && e.show && setTimeout(() => {
45
- y("toast:close");
46
- }, e.timeout);
42
+ setup(t, { emit: d }) {
43
+ const o = t, v = d, l = () => {
44
+ o.timeout && o.show && setTimeout(() => {
45
+ v("toast:close");
46
+ }, o.timeout);
47
47
  };
48
- return p(() => {
49
- n();
50
- }), v(() => e.show, (o) => {
51
- o && n();
52
- }), (o, l) => (s(), i(r(C), {
48
+ return y(() => {
49
+ l();
50
+ }), w(() => o.show, (e) => {
51
+ e && l();
52
+ }), (e, i) => (s(), n(r(b), {
53
53
  show: t.show,
54
54
  as: "template",
55
- enter: "transition-opacity duration-300",
56
- "enter-from": "opacity-0",
57
- "enter-to": "opacity-100",
58
- leave: "transition-opacity duration-300",
59
- "leave-from": "opacity-100",
60
- "leave-to": "opacity-0"
55
+ enter: "rvc-toast-transition-enter",
56
+ "enter-from": "rvc-toast-transition-enter-from",
57
+ "enter-to": "rvc-toast-transition-enter-to",
58
+ leave: "rvc-toast-transition-leave",
59
+ "leave-from": "rvc-toast-transition-leave-from",
60
+ "leave-to": "rvc-toast-transition-leave-to"
61
61
  }, {
62
62
  default: c(() => [
63
- (s(), i(u(t.as), {
64
- class: w(["rvc-toast transition-opacity", `rvc-toast-${t.position}`, `rvc-toast-${t.type}`, { "rvc-toast-open": t.show }])
63
+ (s(), n(m(t.as), {
64
+ class: h(["rvc-toast", `rvc-toast-${t.position}`, `rvc-toast-${t.type}`, { "rvc-toast-open": t.show }])
65
65
  }, {
66
66
  default: c(() => [
67
- a(o.$slots, "icon", {}, () => [
68
- t.icon ? (s(), i(u(t.icon), {
67
+ a(e.$slots, "icon", {}, () => [
68
+ t.icon ? (s(), n(m(t.icon), {
69
69
  key: 0,
70
70
  class: "rvc-toast-icon"
71
- })) : d("", !0)
71
+ })) : f("", !0)
72
72
  ]),
73
- m("div", null, [
74
- a(o.$slots, "title", {}, () => [
75
- m("span", k, h(t.title), 1)
73
+ u("div", null, [
74
+ a(e.$slots, "title", {}, () => [
75
+ u("span", k, p(t.title), 1)
76
76
  ]),
77
- a(o.$slots, "default")
77
+ a(e.$slots, "default")
78
78
  ]),
79
- a(o.$slots, "close", {}, () => [
80
- t.showClose ? (s(), $("button", {
79
+ a(e.$slots, "close", {}, () => [
80
+ t.showClose ? (s(), C("button", {
81
81
  key: 0,
82
82
  type: "button",
83
- class: "rvc-toast-close transition-colors",
84
- onClick: l[0] || (l[0] = (B) => o.$emit("toast:close"))
83
+ class: "rvc-toast-close",
84
+ "aria-label": "Close",
85
+ onClick: i[0] || (i[0] = (B) => e.$emit("toast:close"))
85
86
  }, [
86
- g(r(b), { class: "size-5" })
87
- ])) : d("", !0)
87
+ $(r(g))
88
+ ])) : f("", !0)
88
89
  ])
89
90
  ]),
90
91
  _: 3
@@ -13,7 +13,7 @@
13
13
  --rvc-toast-anchor-decoration: underline;
14
14
  --rvc-toast-icon-size: calc(var(--spacing) * 6);
15
15
  --rvc-toast-title-font-weight: var(--font-weight-medium);
16
- --rvc-toast-transition-property: colors;
16
+ --rvc-toast-transition-property: color, background-color, border-color;
17
17
  --rvc-toast-offset: calc(var(--spacing) * 6);
18
18
 
19
19
  /* Default (Info) variant */
@@ -59,23 +59,26 @@
59
59
 
60
60
  @layer components {
61
61
  .rvc-toast {
62
- gap: var(--rvc-toast-gap);
63
- padding: var(--rvc-toast-padding-y) var(--rvc-toast-padding-x);
64
- border-radius: var(--rvc-toast-border-radius);
65
- font-size: var(--rvc-toast-font-size);
66
- background-color: var(--rvc-toast-bg-color);
67
- color: var(--rvc-toast-color);
68
- width: var(--rvc-toast-width);
69
- max-width: var(--rvc-toast-max-width);
70
- border-width: var(--rvc-toast-border-width);
71
- border-color: var(--rvc-toast-border-color);
72
- filter: drop-shadow(0px 4px 8px rgba(0, 0, 0, 0.05));
73
62
  display: flex;
74
63
  position: fixed;
64
+ z-index: 999;
75
65
  left: 50%;
76
- transform: translateX(-50%);
66
+ width: var(--rvc-toast-width);
67
+ max-width: var(--rvc-toast-max-width);
68
+ padding: var(--rvc-toast-padding-y) var(--rvc-toast-padding-x);
77
69
  overflow: hidden;
78
- z-index: 99;
70
+ transform: translateX(-50%);
71
+ transition-property: opacity;
72
+ transition-duration: var(--rvc-toast-transition-duration);
73
+ transition-timing-function: var(--rvc-toast-transition-timing-function);
74
+ border-width: var(--rvc-toast-border-width);
75
+ border-radius: var(--rvc-toast-border-radius);
76
+ border-color: var(--rvc-toast-border-color);
77
+ background-color: var(--rvc-toast-bg-color);
78
+ color: var(--rvc-toast-color);
79
+ font-size: var(--rvc-toast-font-size);
80
+ gap: var(--rvc-toast-gap);
81
+ filter: drop-shadow(0 4px 8px rgb(0 0 0 / 5%));
79
82
 
80
83
  &.rvc-toast-bottom {
81
84
  bottom: var(--rvc-toast-offset);
@@ -86,11 +89,11 @@
86
89
  }
87
90
 
88
91
  a {
89
- text-decoration: var(--rvc-toast-anchor-decoration);
90
92
  transition-property: var(--rvc-toast-transition-property);
91
93
  transition-duration: var(--rvc-toast-transition-duration);
92
94
  transition-timing-function: var(--rvc-toast-transition-timing-function);
93
95
  color: var(--rvc-toast-anchor-color);
96
+ text-decoration: var(--rvc-toast-anchor-decoration);
94
97
 
95
98
  &:hover {
96
99
  color: var(--rvc-toast-anchor-color);
@@ -98,9 +101,9 @@
98
101
  }
99
102
 
100
103
  ul, ol {
101
- list-style-position: inside;
102
104
  margin: 0;
103
105
  padding-left: calc(var(--spacing) * 2);
106
+ list-style-position: inside;
104
107
  }
105
108
 
106
109
  ul {
@@ -112,39 +115,44 @@
112
115
  }
113
116
 
114
117
  .rvc-toast-close {
115
- background-color: var(--rvc-toast-close-bg-color);
116
- color: var(--rvc-toast-icon-color);
117
- border-bottom-left-radius: var(--rvc-toast-border-radius);
118
- transition-property: var(--rvc-toast-transition-property);
119
- transition-duration: var(--rvc-toast-transition-duration);
120
- transition-timing-function: var(--rvc-toast-transition-timing-function);
121
118
  display: inline-flex;
122
- justify-content: center;
123
- align-items: center;
124
119
  position: absolute;
125
120
  top: 0;
126
121
  right: 0;
122
+ align-items: center;
123
+ justify-content: center;
127
124
  padding: calc(var(--spacing) * 1.5);
125
+ transition-property: var(--rvc-toast-transition-property);
126
+ transition-duration: var(--rvc-toast-transition-duration);
127
+ transition-timing-function: var(--rvc-toast-transition-timing-function);
128
+ border-bottom-left-radius: var(--rvc-toast-border-radius);
129
+ background-color: var(--rvc-toast-close-bg-color);
130
+ color: var(--rvc-toast-icon-color);
128
131
 
129
132
  &:hover {
130
133
  background-color: var(--rvc-toast-close-bg-color-hover);
131
134
  color: var(--rvc-toast-icon-color-hover);
132
135
  }
136
+
137
+ svg {
138
+ width: calc(var(--spacing) * 5);
139
+ height: calc(var(--spacing) * 5);
140
+ }
133
141
  }
134
142
 
135
143
  .rvc-toast-icon {
144
+ display: block;
145
+ flex-shrink: 0;
136
146
  width: var(--rvc-toast-icon-size);
137
147
  height: var(--rvc-toast-icon-size);
138
148
  color: var(--rvc-toast-icon-color);
139
- display: block;
140
- flex-shrink: 0;
141
149
  }
142
150
 
143
151
  .rvc-toast-title {
144
- color: var(--rvc-toast-title-color);
145
- font-weight: var(--rvc-toast-title-font-weight);
146
152
  display: block;
147
153
  margin-bottom: calc(var(--spacing) * 2);
154
+ color: var(--rvc-toast-title-color);
155
+ font-weight: var(--rvc-toast-title-font-weight);
148
156
 
149
157
  &:last-child {
150
158
  margin-bottom: 0;
@@ -184,4 +192,22 @@
184
192
  --rvc-toast-anchor-color-hover: var(--rvc-toast-anchor-color-danger-hover);
185
193
  }
186
194
  }
195
+
196
+ /* Transitions */
197
+ .rvc-toast-transition-enter,
198
+ .rvc-toast-transition-leave {
199
+ transition-property: opacity;
200
+ transition-duration: 300ms;
201
+ transition-timing-function: var(--rvc-toast-transition-timing-function);
202
+ }
203
+
204
+ .rvc-toast-transition-enter-from,
205
+ .rvc-toast-transition-leave-to {
206
+ opacity: 0;
207
+ }
208
+
209
+ .rvc-toast-transition-enter-to,
210
+ .rvc-toast-transition-leave-from {
211
+ opacity: 1;
212
+ }
187
213
  }
@@ -1,4 +1,4 @@
1
- import { _ as o } from "../_shared/Tooltip-BKXJoJ1x.js";
1
+ import { _ as o } from "../_shared/Tooltip-B93ZF7IF.js";
2
2
  export {
3
3
  o as Tooltip,
4
4
  o as default
@@ -20,39 +20,36 @@
20
20
 
21
21
  @layer components {
22
22
  .rvc-tooltip {
23
+ visibility: hidden;
24
+ position: absolute;
23
25
  z-index: 10;
24
- color: var(--rvc-tooltip-color);
26
+ top: 0;
27
+ left: 0;
28
+ width: var(--rvc-tooltip-width);
29
+ padding: var(--rvc-tooltip-padding-y) var(--rvc-tooltip-padding-x) var(--rvc-tooltip-padding-y) var(--rvc-tooltip-padding-x);
25
30
  transition-property: var(--rvc-tooltip-transition-property);
26
31
  transition-duration: var(--rvc-tooltip-transition-duration);
27
32
  transition-timing-function: var(--rvc-tooltip-transition-timing-function);
33
+ opacity: 0;
34
+ color: var(--rvc-tooltip-color);
28
35
  text-align: var(--rvc-tooltip-text-align);
29
- padding-top: var(--rvc-tooltip-padding-y);
30
- padding-right: var(--rvc-tooltip-padding-x);
31
- padding-bottom: var(--rvc-tooltip-padding-y);
32
- padding-left: var(--rvc-tooltip-padding-x);
33
- width: var(--rvc-tooltip-width);
34
- position: absolute;
35
- top: 0;
36
- left: 0;
37
36
 
38
37
  &::before {
39
38
  content: '';
40
39
  position: absolute;
41
- top: 0;
42
- right: 0;
43
- bottom: 0;
44
- left: 0;
40
+ z-index: -1;
41
+ inset: 0;
45
42
  border-radius: var(--rvc-tooltip-border-radius);
46
43
  background-color: var(--rvc-tooltip-bg-color);
47
- z-index: -1;
48
44
  }
49
45
 
50
46
  .rvc-tooltip-arrow {
51
- background-color: var(--rvc-tooltip-bg-color);
47
+ position: absolute;
48
+ z-index: -1;
52
49
  width: var(--rvc-tooltip-arrow-size);
53
50
  height: var(--rvc-tooltip-arrow-size);
51
+ background-color: var(--rvc-tooltip-bg-color);
54
52
  clip-path: polygon(0 0, 50% 50%, 100% 0);
55
- z-index: -1;
56
53
  }
57
54
 
58
55
  &.rvc-tooltip-blur::before,
@@ -66,4 +63,9 @@
66
63
  --rvc-tooltip-arrow-size: var(--rvc-tooltip-arrow-size-sm);
67
64
  }
68
65
  }
66
+
67
+ .rvc-tooltip-wrapper:hover .rvc-tooltip {
68
+ visibility: visible;
69
+ opacity: 1;
70
+ }
69
71
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@robuust-digital/vue-components",
3
- "version": "2.0.0-rc.0",
3
+ "version": "2.0.0-rc.10",
4
4
  "type": "module",
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -17,11 +17,15 @@
17
17
  },
18
18
  "homepage": "https://github.com/robuust/vue-components/#readme",
19
19
  "files": [
20
- "./dist",
21
- "./LICENSE",
22
- "./README.md"
20
+ "dist",
21
+ "LICENSE",
22
+ "README.md",
23
+ "CHANGELOG.md"
23
24
  ],
25
+ "main": "./dist/core/index.js",
26
+ "module": "./dist/core/index.js",
24
27
  "exports": {
28
+ ".": "./dist/core/index.js",
25
29
  "./core": "./dist/core/index.js",
26
30
  "./core/css": "./dist/core/styles.css",
27
31
  "./core/theme": "./dist/core/theme.css",
@@ -47,7 +51,8 @@
47
51
  "docs:build": "vitepress build docs",
48
52
  "docs:preview": "vitepress preview docs",
49
53
  "test:unit": "vitest run",
50
- "lint": "eslint ."
54
+ "lint": "eslint .",
55
+ "lint:style": "stylelint 'src/**/*.{vue,css}'"
51
56
  },
52
57
  "dependencies": {
53
58
  "@floating-ui/vue": "^1.1.6",
@@ -56,7 +61,7 @@
56
61
  "@tiptap/extension-link": "^2.11.5",
57
62
  "@tiptap/starter-kit": "^2.11.5",
58
63
  "@tiptap/vue-3": "^2.11.5",
59
- "@vueuse/core": "^12.6.1",
64
+ "@vueuse/core": "^13.0.0",
60
65
  "vue": "^3.5.13"
61
66
  },
62
67
  "devDependencies": {
@@ -71,14 +76,23 @@
71
76
  "eslint-plugin-vue": "^9.32.0",
72
77
  "jsdom": "^26.0.0",
73
78
  "postcss": "^8.5.2",
79
+ "postcss-html": "^1.8.0",
80
+ "postcss-scss": "^4.0.9",
81
+ "stylelint": "^16.14.1",
82
+ "stylelint-config-property-sort-order-smacss": "^10.0.0",
83
+ "stylelint-config-standard": "^38.0.0",
74
84
  "tailwindcss": "^4.0.6",
75
85
  "vite": "^6.1.0",
76
86
  "vite-plugin-eslint": "^1.8.1",
77
- "vite-plugin-static-copy": "^2.2.0",
87
+ "vite-plugin-static-copy": "^3.0.0",
88
+ "vite-plugin-stylelint": "^6.0.0",
78
89
  "vite-plugin-vue-devtools": "^7.7.2",
79
90
  "vite-svg-loader": "^5.1.0",
80
91
  "vitepress": "^2.0.0-alpha.2",
81
92
  "vitest": "^3.0.5"
82
93
  },
83
- "packageManager": "yarn@4.6.0"
94
+ "resolutions": {
95
+ "@vueuse/core": "^13.0.0"
96
+ },
97
+ "packageManager": "yarn@4.9.1"
84
98
  }
@@ -1,193 +0,0 @@
1
- import { ref as g, computed as f, createBlock as w, openBlock as C, unref as a, withCtx as r, createVNode as n, withModifiers as x, createElementVNode as o, normalizeClass as B, renderSlot as b, createElementBlock as E, createCommentVNode as D, createTextVNode as L, toDisplayString as h } from "vue";
2
- import { TransitionRoot as F, Dialog as I, TransitionChild as $, DialogPanel as N, DialogTitle as R } from "@headlessui/vue";
3
- import { _ as S } from "./ButtonBase-CQjlJ85F.js";
4
- import { r as T } from "./XMarkIcon-90mcPzBs.js";
5
- function V(t) {
6
- const c = g(null), i = g(!1), y = f(() => t.as === "form"), v = f(() => `${t.id}-title`), d = f(() => `${t.id}-content`), u = f(() => {
7
- var m;
8
- return (m = c.value) == null ? void 0 : m.querySelector('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
9
- });
10
- return {
11
- contentRef: c,
12
- ready: i,
13
- isForm: y,
14
- titleId: v,
15
- descriptionId: d,
16
- initialFocusElement: u
17
- };
18
- }
19
- const q = {
20
- role: "presentation",
21
- class: "fixed inset-0 z-10 w-screen overflow-y-auto"
22
- }, z = { class: "flex min-h-full justify-center p-4 items-center sm:p-0" }, j = { class: "rvc-modal-header" }, M = { class: "flex items-center justify-between" }, A = {
23
- key: 0,
24
- class: "ml-3 flex h-7 items-center"
25
- }, P = ["id"], G = { class: "rvc-modal-footer" }, Q = {
26
- __name: "Modal",
27
- props: {
28
- as: {
29
- type: String,
30
- default: "div"
31
- },
32
- id: {
33
- type: String,
34
- required: !0
35
- },
36
- title: {
37
- type: String,
38
- required: !0
39
- },
40
- showClose: {
41
- type: Boolean
42
- },
43
- spinning: {
44
- type: Boolean
45
- },
46
- submitLabel: {
47
- type: String,
48
- default: "Confirm"
49
- },
50
- cancelLabel: {
51
- type: String,
52
- default: "Cancel"
53
- },
54
- panelClass: {
55
- type: String,
56
- default: "sm:max-w-lg"
57
- }
58
- },
59
- emits: ["modal:open", "modal:close", "modal:save", "modal:closed"],
60
- setup(t, { emit: c }) {
61
- const i = c, y = t, {
62
- contentRef: v,
63
- ready: d,
64
- isForm: u,
65
- titleId: m,
66
- descriptionId: p,
67
- initialFocusElement: k
68
- } = V(y);
69
- return (s, e) => (C(), w(a(F), { as: "template" }, {
70
- default: r(() => [
71
- n(a(I), {
72
- as: t.as,
73
- class: "rvc-modal",
74
- static: "",
75
- "aria-modal": "true",
76
- role: "dialog",
77
- "initial-focus": a(k),
78
- "aria-labelledby": a(m),
79
- onClose: e[6] || (e[6] = (l) => s.$emit("modal:close")),
80
- onSubmit: e[7] || (e[7] = x((l) => i("modal:save", l), ["prevent"]))
81
- }, {
82
- default: r(() => [
83
- n(a($), {
84
- as: "template",
85
- enter: "ease-out duration-300",
86
- "enter-from": "opacity-0",
87
- "enter-to": "opacity-100",
88
- leave: "ease-in duration-200",
89
- "leave-from": "opacity-100",
90
- "leave-to": "opacity-0",
91
- onBeforeEnter: e[0] || (e[0] = (l) => i("modal:open"))
92
- }, {
93
- default: r(() => e[8] || (e[8] = [
94
- o("div", {
95
- "aria-hidden": "true",
96
- class: "fixed inset-0 transition-opacity rvc-modal-backdrop"
97
- }, null, -1)
98
- ])),
99
- _: 1
100
- }),
101
- o("div", q, [
102
- o("div", z, [
103
- n(a($), {
104
- as: "template",
105
- enter: "ease-out duration-300",
106
- "enter-from": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
107
- "enter-to": "opacity-100 translate-y-0 sm:scale-100",
108
- leave: "ease-in duration-200",
109
- "leave-from": "opacity-100 translate-y-0 sm:scale-100",
110
- "leave-to": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
111
- onBeforeEnter: e[4] || (e[4] = (l) => d.value = !0),
112
- onAfterLeave: e[5] || (e[5] = (l) => (d.value = !1, i("modal:closed")))
113
- }, {
114
- default: r(() => [
115
- n(a(N), {
116
- class: B(["rvc-modal-panel", t.panelClass]),
117
- "aria-busy": t.spinning,
118
- "aria-describedby": a(p)
119
- }, {
120
- default: r(() => [
121
- o("header", j, [
122
- b(s.$slots, "header", { title: t.title }, () => [
123
- o("div", M, [
124
- n(a(R), {
125
- id: a(m),
126
- class: "rvc-modal-title"
127
- }, {
128
- default: r(() => [
129
- L(h(t.title), 1)
130
- ]),
131
- _: 1
132
- }, 8, ["id"]),
133
- t.showClose ? (C(), E("div", A, [
134
- o("button", {
135
- type: "button",
136
- class: "relative rvc-modal-close",
137
- "aria-label": "Close panel",
138
- onClick: e[1] || (e[1] = (l) => i("modal:close"))
139
- }, [
140
- n(a(T), {
141
- class: "size-full",
142
- "aria-hidden": "true"
143
- })
144
- ])
145
- ])) : D("", !0)
146
- ])
147
- ])
148
- ]),
149
- o("div", {
150
- id: a(p),
151
- ref_key: "contentRef",
152
- ref: v,
153
- class: "rvc-modal-content"
154
- }, [
155
- b(s.$slots, "default", { ready: a(d) })
156
- ], 8, P),
157
- o("footer", G, [
158
- b(s.$slots, "footer", { loading: t.spinning }, () => [
159
- n(S, {
160
- type: a(u) ? "submit" : "button",
161
- label: t.submitLabel,
162
- spinning: t.spinning,
163
- disabled: t.spinning,
164
- onClick: e[2] || (e[2] = (l) => !a(u) && s.$emit("modal:save"))
165
- }, null, 8, ["type", "label", "spinning", "disabled"]),
166
- n(S, {
167
- type: "button",
168
- color: "light",
169
- label: t.cancelLabel,
170
- onClick: e[3] || (e[3] = (l) => s.$emit("modal:close"))
171
- }, null, 8, ["label"])
172
- ])
173
- ])
174
- ]),
175
- _: 3
176
- }, 8, ["class", "aria-busy", "aria-describedby"])
177
- ]),
178
- _: 3
179
- })
180
- ])
181
- ])
182
- ]),
183
- _: 3
184
- }, 8, ["as", "initial-focus", "aria-labelledby"])
185
- ]),
186
- _: 3
187
- }));
188
- }
189
- };
190
- export {
191
- Q as _,
192
- V as u
193
- };