vlite3 1.2.4 → 1.2.5
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.
- package/README.md +17 -7
- package/components/AvatarGroup/AvatarGroup.vue.js +10 -9
- package/components/Beacon.vue.d.ts +13 -0
- package/components/CategoryManager/CategoryManager.vue.js +1 -1
- package/components/{CopyButton.vue.d.ts → Clipboard.vue.d.ts} +4 -3
- package/components/{CopyButton.vue.js → Clipboard.vue.js} +19 -19
- package/components/Clipboard.vue2.js +4 -0
- package/components/ColorPicker/ColorIro.vue3.js +2 -2
- package/components/ColorPicker/ColorPicker.vue.js +2 -2
- package/components/DataTable/types.d.ts +1 -1
- package/components/Modal.vue.js +1 -1
- package/components/Modal.vue2.js +92 -86
- package/components/Persona.vue.d.ts +25 -0
- package/components/Screen/ScreenFilter.vue.js +1 -1
- package/components/SidePanel.vue.js +3 -3
- package/components/SidePanel.vue2.js +44 -56
- package/components/SidebarMenu/SidebarMenuItem.vue.js +70 -74
- package/components/ThemeToggle.vue.js +10 -10
- package/components/index.d.ts +2 -0
- package/index.d.ts +1 -1
- package/index.js +17 -17
- package/package.json +1 -1
- package/style.css +25 -16
- package/components/CopyButton.vue2.js +0 -4
- /package/components/ColorPicker/{ColorIro.vue.js → ColorIro.vue2.js} +0 -0
package/README.md
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Vlite3: The Foundation for Enterprise SaaS
|
|
2
2
|
|
|
3
|
-
A
|
|
3
|
+
A clean, modular, and highly customizable component library for Vue 3. Build large, complex applications with confidence. Vlite3 gives you the solid, Vlite3 delivers 80+ production-ready components designed for real-world enterprise applications. Each component has been thoroughly tested in demanding enterprise production environments, ensuring stability, scalability, and performance.
|
|
4
|
+
|
|
5
|
+
Created for personal projects and available for anyone to use.
|
|
6
|
+
|
|
7
|
+
## Demo
|
|
8
|
+
|
|
9
|
+
[Live Demo](https://vlite3.vercel.app/)
|
|
4
10
|
|
|
5
11
|
## Installation
|
|
6
12
|
|
|
@@ -14,10 +20,6 @@ yarn add vlite3
|
|
|
14
20
|
|
|
15
21
|
```
|
|
16
22
|
|
|
17
|
-
## Demo
|
|
18
|
-
|
|
19
|
-
[Live Demo](https://vlite3.vercel.app/)
|
|
20
|
-
|
|
21
23
|
## 2. Tailwind CSS Setup (Tailwind v4)
|
|
22
24
|
|
|
23
25
|
`vite.config.ts`
|
|
@@ -407,6 +409,8 @@ Follow these rules strictly to ensure visual consistency and predictable styling
|
|
|
407
409
|
- [x] **Screen**
|
|
408
410
|
- [x] **ChatInterface**
|
|
409
411
|
- [x] **CommentThread**
|
|
412
|
+
- [x] **Clipboard**
|
|
413
|
+
- [x] **AppShell**
|
|
410
414
|
|
|
411
415
|
### Inputs & Forms
|
|
412
416
|
|
|
@@ -437,6 +441,7 @@ Follow these rules strictly to ensure visual consistency and predictable styling
|
|
|
437
441
|
### Data Display
|
|
438
442
|
|
|
439
443
|
- [x] **Avatar**
|
|
444
|
+
- [x] **Persona**
|
|
440
445
|
- [x] **Accordion**
|
|
441
446
|
- [x] **Carousel**
|
|
442
447
|
- [x] **DataTable**
|
|
@@ -460,6 +465,7 @@ Follow these rules strictly to ensure visual consistency and predictable styling
|
|
|
460
465
|
### Feedback & Overlays
|
|
461
466
|
|
|
462
467
|
- [x] **Alert**
|
|
468
|
+
- [x] **Beacon**
|
|
463
469
|
- [x] **Modal**
|
|
464
470
|
- [x] **Empty**
|
|
465
471
|
- [x] **ConfirmationModal**
|
|
@@ -485,7 +491,11 @@ Follow these rules strictly to ensure visual consistency and predictable styling
|
|
|
485
491
|
- [0-setup.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/0-vlite3-setup.md)
|
|
486
492
|
- [1-theming.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/1-theming.md)
|
|
487
493
|
- [2-components.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/2-all-components.md)
|
|
488
|
-
- [3-forms.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/
|
|
494
|
+
- [3-forms.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/1-Components/Forms.md)
|
|
489
495
|
- [3-utility.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/3-utility.md)
|
|
490
496
|
- [4-i18n.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/4-i18n.md)
|
|
491
497
|
- [5-search-util.md](https://github.com/safdar-azeem/vlite3/blob/main/docs/5-search-util.md)
|
|
498
|
+
|
|
499
|
+
## Author
|
|
500
|
+
|
|
501
|
+
[safdar-azeem](https://github.com/safdar-azeem)
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { defineComponent as k, computed as u, openBlock as l, createElementBlock as s, normalizeClass as a, Fragment as z, renderList as b, createVNode as f, withCtx as x, createElementVNode as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
const
|
|
1
|
+
import { defineComponent as k, computed as u, openBlock as l, createElementBlock as s, normalizeClass as a, Fragment as z, renderList as b, createVNode as f, withCtx as x, createElementVNode as p, toDisplayString as r, createCommentVNode as o, normalizeStyle as y } from "vue";
|
|
2
|
+
import C from "../Avatar.vue.js";
|
|
3
|
+
import w from "../Tooltip.vue.js";
|
|
4
|
+
const S = { class: "flex flex-col gap-0.5 text-left" }, N = {
|
|
5
5
|
key: 0,
|
|
6
6
|
class: "font-semibold text-sm text-tooltip-foreground"
|
|
7
7
|
}, V = {
|
|
@@ -44,18 +44,19 @@ const w = { class: "flex flex-col gap-0.5 text-left" }, N = {
|
|
|
44
44
|
key: c,
|
|
45
45
|
class: a([c !== 0 ? m[e.overlap] : "", "relative shrink-0"])
|
|
46
46
|
}, [
|
|
47
|
-
f(
|
|
47
|
+
f(w, {
|
|
48
48
|
disabled: !t.heading && !t.text,
|
|
49
|
-
placement: "top"
|
|
49
|
+
placement: "top",
|
|
50
|
+
contentClass: "min-w-[100px] px-10!"
|
|
50
51
|
}, {
|
|
51
52
|
content: x(() => [
|
|
52
|
-
|
|
53
|
+
p("div", S, [
|
|
53
54
|
t.heading ? (l(), s("span", N, r(t.heading), 1)) : o("", !0),
|
|
54
55
|
t.text ? (l(), s("span", V, r(t.text), 1)) : o("", !0)
|
|
55
56
|
])
|
|
56
57
|
]),
|
|
57
58
|
default: x(() => [
|
|
58
|
-
f(
|
|
59
|
+
f(C, {
|
|
59
60
|
src: t.src,
|
|
60
61
|
alt: t.alt,
|
|
61
62
|
fallback: t.fallback,
|
|
@@ -76,7 +77,7 @@ const w = { class: "flex flex-col gap-0.5 text-left" }, N = {
|
|
|
76
77
|
g,
|
|
77
78
|
e.rounded === "full" ? "rounded-full" : e.rounded === "none" ? "rounded-none" : `rounded-${e.rounded}`
|
|
78
79
|
]),
|
|
79
|
-
style:
|
|
80
|
+
style: y({
|
|
80
81
|
// Match the same size as Avatar sizeClasses
|
|
81
82
|
width: i[e.size],
|
|
82
83
|
height: i[e.size],
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type BeaconVariant = 'primary' | 'danger' | 'warning' | 'success' | 'info';
|
|
2
|
+
export type BeaconSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
interface Props {
|
|
4
|
+
variant?: BeaconVariant | string;
|
|
5
|
+
size?: BeaconSize | string;
|
|
6
|
+
class?: any;
|
|
7
|
+
}
|
|
8
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
9
|
+
class: any;
|
|
10
|
+
variant: BeaconVariant | string;
|
|
11
|
+
size: BeaconSize | string;
|
|
12
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, HTMLSpanElement>;
|
|
13
|
+
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ButtonVariant, ButtonSize, ButtonRounded } from '../types';
|
|
2
|
-
export interface
|
|
2
|
+
export interface ClipboardProps {
|
|
3
3
|
/** The content to be copied to the clipboard */
|
|
4
4
|
textToCopy: string;
|
|
5
5
|
variant?: ButtonVariant;
|
|
@@ -26,15 +26,16 @@ declare function __VLS_template(): {
|
|
|
26
26
|
rootEl: HTMLButtonElement;
|
|
27
27
|
};
|
|
28
28
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
29
|
-
declare const __VLS_component: import('vue').DefineComponent<
|
|
29
|
+
declare const __VLS_component: import('vue').DefineComponent<ClipboardProps, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
30
30
|
copy: (text: string) => any;
|
|
31
31
|
error: (err: Error) => any;
|
|
32
|
-
}, string, import('vue').PublicProps, Readonly<
|
|
32
|
+
}, string, import('vue').PublicProps, Readonly<ClipboardProps> & Readonly<{
|
|
33
33
|
onCopy?: (text: string) => any;
|
|
34
34
|
onError?: (err: Error) => any;
|
|
35
35
|
}>, {
|
|
36
36
|
variant: ButtonVariant;
|
|
37
37
|
size: ButtonSize;
|
|
38
|
+
rounded: ButtonRounded;
|
|
38
39
|
asIcon: boolean;
|
|
39
40
|
defaultIcon: string;
|
|
40
41
|
copiedIcon: string;
|
|
@@ -1,61 +1,61 @@
|
|
|
1
|
-
import { defineComponent as f, ref as p, computed as
|
|
1
|
+
import { defineComponent as f, ref as p, computed as i, openBlock as m, createBlock as x, normalizeClass as T, withCtx as v, renderSlot as y, createCommentVNode as I } from "vue";
|
|
2
2
|
import C from "./Button.vue.js";
|
|
3
|
-
import { $t as
|
|
4
|
-
const
|
|
5
|
-
__name: "
|
|
3
|
+
import { $t as d } from "../utils/i18n.js";
|
|
4
|
+
const w = /* @__PURE__ */ f({
|
|
5
|
+
__name: "Clipboard",
|
|
6
6
|
props: {
|
|
7
7
|
textToCopy: {},
|
|
8
8
|
variant: { default: "outline" },
|
|
9
9
|
size: { default: "md" },
|
|
10
|
-
rounded: {},
|
|
10
|
+
rounded: { default: "full" },
|
|
11
11
|
class: {},
|
|
12
12
|
disabled: { type: Boolean },
|
|
13
13
|
defaultIcon: { default: "lucide:copy" },
|
|
14
14
|
copiedIcon: { default: "lucide:check" },
|
|
15
15
|
defaultText: {},
|
|
16
16
|
copiedText: {},
|
|
17
|
-
defaultTextI18n: { default: "vlite.
|
|
18
|
-
copiedTextI18n: { default: "vlite.
|
|
17
|
+
defaultTextI18n: { default: "vlite.clipboard.copy" },
|
|
18
|
+
copiedTextI18n: { default: "vlite.clipboard.copied" },
|
|
19
19
|
asIcon: { type: Boolean, default: !1 }
|
|
20
20
|
},
|
|
21
21
|
emits: ["copy", "error"],
|
|
22
|
-
setup(o, { emit:
|
|
23
|
-
const e = o,
|
|
22
|
+
setup(o, { emit: r }) {
|
|
23
|
+
const e = o, l = r, a = p(!1);
|
|
24
24
|
let n = null;
|
|
25
|
-
const u =
|
|
25
|
+
const u = i(() => a.value ? e.copiedIcon : e.defaultIcon), c = i(() => {
|
|
26
26
|
if (!e.asIcon)
|
|
27
27
|
if (a.value) {
|
|
28
28
|
if (e.copiedText) return e.copiedText;
|
|
29
|
-
const t =
|
|
29
|
+
const t = d(e.copiedTextI18n);
|
|
30
30
|
return t !== e.copiedTextI18n ? t : "Copied";
|
|
31
31
|
} else {
|
|
32
32
|
if (e.defaultText) return e.defaultText;
|
|
33
|
-
const t =
|
|
33
|
+
const t = d(e.defaultTextI18n);
|
|
34
34
|
return t !== e.defaultTextI18n ? t : "Copy";
|
|
35
35
|
}
|
|
36
36
|
}), s = async () => {
|
|
37
37
|
if (!e.disabled)
|
|
38
38
|
try {
|
|
39
|
-
await navigator.clipboard.writeText(e.textToCopy), a.value = !0,
|
|
39
|
+
await navigator.clipboard.writeText(e.textToCopy), a.value = !0, l("copy", e.textToCopy), n && clearTimeout(n), n = setTimeout(() => {
|
|
40
40
|
a.value = !1;
|
|
41
41
|
}, 500);
|
|
42
42
|
} catch (t) {
|
|
43
|
-
|
|
43
|
+
l("error", t instanceof Error ? t : new Error("Copy failed"));
|
|
44
44
|
}
|
|
45
45
|
};
|
|
46
|
-
return (t,
|
|
46
|
+
return (t, b) => (m(), x(C, {
|
|
47
47
|
variant: o.variant,
|
|
48
48
|
size: o.size,
|
|
49
49
|
rounded: o.rounded,
|
|
50
50
|
class: T(e.class),
|
|
51
51
|
disabled: o.disabled,
|
|
52
52
|
icon: u.value,
|
|
53
|
-
text:
|
|
53
|
+
text: c.value,
|
|
54
54
|
"as-icon": o.asIcon,
|
|
55
55
|
onClick: s
|
|
56
56
|
}, {
|
|
57
|
-
default:
|
|
58
|
-
!o.asIcon && !
|
|
57
|
+
default: v(() => [
|
|
58
|
+
!o.asIcon && !c.value ? y(t.$slots, "default", {
|
|
59
59
|
key: 0,
|
|
60
60
|
copied: a.value
|
|
61
61
|
}) : I("", !0)
|
|
@@ -65,5 +65,5 @@ const z = /* @__PURE__ */ f({
|
|
|
65
65
|
}
|
|
66
66
|
});
|
|
67
67
|
export {
|
|
68
|
-
|
|
68
|
+
w as default
|
|
69
69
|
};
|
|
@@ -6,8 +6,8 @@ import O from "../Input.vue.js";
|
|
|
6
6
|
import "../../core/config.js";
|
|
7
7
|
/* empty css */
|
|
8
8
|
import y from "../Button.vue.js";
|
|
9
|
-
import E from "./ColorIro.
|
|
10
|
-
/* empty css
|
|
9
|
+
import E from "./ColorIro.vue2.js";
|
|
10
|
+
/* empty css */
|
|
11
11
|
import { useEyeDropper as P } from "@vueuse/core";
|
|
12
12
|
const I = {
|
|
13
13
|
key: 0,
|
package/components/Modal.vue.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./Modal.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-
|
|
4
|
+
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-b47509d4"]]);
|
|
5
5
|
export {
|
|
6
6
|
p as default
|
|
7
7
|
};
|
package/components/Modal.vue2.js
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
import { useKeyStroke as
|
|
4
|
-
import { $t as
|
|
5
|
-
const
|
|
1
|
+
import { defineComponent as R, ref as f, inject as V, computed as p, markRaw as W, watch as T, provide as K, nextTick as L, onMounted as A, onUnmounted as U, openBlock as s, createElementBlock as a, Fragment as q, mergeProps as B, withModifiers as S, renderSlot as v, createCommentVNode as r, createBlock as I, Teleport as G, normalizeClass as i, createVNode as z, Transition as H, withCtx as J, createElementVNode as h, toDisplayString as F, resolveDynamicComponent as Q } from "vue";
|
|
2
|
+
import X from "./Button.vue.js";
|
|
3
|
+
import { useKeyStroke as Y } from "../composables/useKeyStroke.js";
|
|
4
|
+
import { $t as O } from "../utils/i18n.js";
|
|
5
|
+
const Z = ["data-testid"], _ = ["data-testid"], ee = {
|
|
6
6
|
key: 0,
|
|
7
7
|
class: "flex-none flex flex-col space-y-1.5 pb-0 border-b border-border/90"
|
|
8
|
-
},
|
|
8
|
+
}, te = { class: "text-lg font-semibold leading-none tracking-tight" }, oe = {
|
|
9
9
|
key: 0,
|
|
10
10
|
class: "text-sm text-muted-foreground mb-3.5"
|
|
11
|
-
},
|
|
11
|
+
}, de = /* @__PURE__ */ R({
|
|
12
12
|
inheritAttrs: !1,
|
|
13
13
|
__name: "Modal",
|
|
14
14
|
props: {
|
|
@@ -28,113 +28,119 @@ const X = ["data-testid"], Y = ["data-testid"], Z = {
|
|
|
28
28
|
bodyProps: {}
|
|
29
29
|
},
|
|
30
30
|
emits: ["close", "update:show", "onOpen"],
|
|
31
|
-
setup(
|
|
32
|
-
const
|
|
31
|
+
setup(o, { emit: j }) {
|
|
32
|
+
const t = o, u = j, l = f(t.show), k = f(!1), b = f(!1), C = f(null);
|
|
33
33
|
let c = null;
|
|
34
|
-
const
|
|
34
|
+
const g = f(!1), d = V("dropdown-context", null), w = p(() => t.body ? W(t.body) : void 0);
|
|
35
35
|
T(
|
|
36
|
-
() =>
|
|
36
|
+
() => t.show,
|
|
37
37
|
(e) => {
|
|
38
|
-
l.value = e, e && (u("onOpen"),
|
|
38
|
+
l.value = e, e && (u("onOpen"), d?.close());
|
|
39
39
|
}
|
|
40
40
|
);
|
|
41
|
-
const
|
|
42
|
-
l.value = !0,
|
|
43
|
-
}, D = (e) => {
|
|
44
|
-
k.value = e;
|
|
41
|
+
const D = () => {
|
|
42
|
+
l.value = !0, d?.close();
|
|
45
43
|
}, E = (e) => {
|
|
46
|
-
|
|
44
|
+
k.value = e;
|
|
45
|
+
}, M = (e) => {
|
|
46
|
+
g.value = e;
|
|
47
47
|
}, m = () => {
|
|
48
48
|
if (k.value) {
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
b.value = !0, c && clearTimeout(c), c = setTimeout(() => {
|
|
50
|
+
b.value = !1;
|
|
51
51
|
}, 1e3);
|
|
52
52
|
return;
|
|
53
53
|
}
|
|
54
54
|
l.value = !1, u("update:show", !1), u("close");
|
|
55
|
-
},
|
|
55
|
+
}, y = () => {
|
|
56
56
|
l.value = !1, u("update:show", !1), u("close");
|
|
57
57
|
};
|
|
58
|
-
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
}, { onKeyStroke:
|
|
62
|
-
|
|
63
|
-
e ? (
|
|
64
|
-
}), L(() => {
|
|
65
|
-
l.value && a?.onChildToggle?.(!0);
|
|
58
|
+
K("modal-context", { close: m, setSubmitting: E, registerFormFooter: M });
|
|
59
|
+
const N = () => {
|
|
60
|
+
t.closeOutside && m();
|
|
61
|
+
}, { onKeyStroke: P } = Y();
|
|
62
|
+
P("Escape", m), T(l, async (e) => {
|
|
63
|
+
e ? (d?.onChildToggle?.(!0), document.body.style.overflow = "hidden", await L(), C.value?.focus()) : (document.body.style.overflow = "", d?.onChildToggle?.(!1), g.value = !1);
|
|
66
64
|
}), A(() => {
|
|
67
|
-
l.value &&
|
|
65
|
+
l.value && d?.onChildToggle?.(!0);
|
|
66
|
+
}), U(() => {
|
|
67
|
+
l.value && d?.onChildToggle?.(!1), document.body.style.overflow = "", c && clearTimeout(c);
|
|
68
68
|
});
|
|
69
|
-
const
|
|
70
|
-
() =>
|
|
69
|
+
const n = p(() => t.titleI18n ? O(t.titleI18n) : t.title), x = p(
|
|
70
|
+
() => t.descriptionI18n ? O(t.descriptionI18n) : t.description
|
|
71
71
|
);
|
|
72
|
-
return (e, $) => (s(),
|
|
73
|
-
e.$slots?.trigger || e.$slots?.default ? (s(),
|
|
72
|
+
return (e, $) => (s(), a(q, null, [
|
|
73
|
+
e.$slots?.trigger || e.$slots?.default ? (s(), a("span", B({
|
|
74
74
|
key: 0,
|
|
75
|
-
onClick: S(
|
|
76
|
-
class: `${
|
|
75
|
+
onClick: S(D, ["stop"]),
|
|
76
|
+
class: `${o.triggerClass}`
|
|
77
77
|
}, e.$attrs, {
|
|
78
|
-
"data-testid": e.$attrs["data-testid"] ? `${e.$attrs["data-testid"]}-trigger` :
|
|
78
|
+
"data-testid": e.$attrs["data-testid"] ? `${e.$attrs["data-testid"]}-trigger` : n.value ? `modal-trigger-${n.value.toString().toLowerCase().replace(/[^a-z0-9]+/g, "-")}` : "modal-trigger"
|
|
79
79
|
}), [
|
|
80
80
|
v(e.$slots, "trigger", {}, () => [
|
|
81
|
-
|
|
81
|
+
o.body ? v(e.$slots, "default", { key: 0 }, void 0, !0) : r("", !0)
|
|
82
82
|
], !0)
|
|
83
|
-
], 16,
|
|
84
|
-
(s(), I(
|
|
85
|
-
l.value ? (s(),
|
|
83
|
+
], 16, Z)) : r("", !0),
|
|
84
|
+
(s(), I(G, { to: "body" }, [
|
|
85
|
+
l.value ? (s(), a("div", {
|
|
86
86
|
key: 0,
|
|
87
|
-
class: i(["fixed inset-0 z-50 flex items-center justify-center p-4 v-modal-overlay",
|
|
88
|
-
onClick:
|
|
87
|
+
class: i(["fixed inset-0 z-50 flex items-center justify-center p-4 v-modal-overlay", o.backdrop ? "v-modal-backdrop" : ""]),
|
|
88
|
+
onClick: N
|
|
89
89
|
}, [
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
class: i(["flex items-center justify-between py-2 px-4 rounded-t-md", t.headerClass])
|
|
90
|
+
z(H, { name: "modal-dialog" }, {
|
|
91
|
+
default: J(() => [
|
|
92
|
+
l.value ? (s(), a("div", {
|
|
93
|
+
key: 0,
|
|
94
|
+
ref_key: "modalRef",
|
|
95
|
+
ref: C,
|
|
96
|
+
tabindex: "-1",
|
|
97
|
+
role: "dialog",
|
|
98
|
+
"aria-modal": "true",
|
|
99
|
+
class: i(["modal-body relative w-full rounded border border-border/60 bg-body shadow-lg text-foreground flex flex-col max-h-[85vh] sm:max-h-[90vh] focus:outline-none", [o.maxWidth]]),
|
|
100
|
+
"data-testid": e.$attrs["data-testid"] || (n.value ? `modal-${n.value.toString().toLowerCase().replace(/[^a-z0-9]+/g, "-")}` : "modal"),
|
|
101
|
+
onClick: $[0] || ($[0] = S(() => {
|
|
102
|
+
}, ["stop"]))
|
|
104
103
|
}, [
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
104
|
+
n.value ? (s(), a("div", ee, [
|
|
105
|
+
h("div", {
|
|
106
|
+
class: i(["flex items-center justify-between py-2 px-4 rounded-t-md", o.headerClass])
|
|
107
|
+
}, [
|
|
108
|
+
h("h3", te, F(n.value), 1),
|
|
109
|
+
z(X, {
|
|
110
|
+
rounded: "full",
|
|
111
|
+
size: "sm",
|
|
112
|
+
icon: "lucide:x",
|
|
113
|
+
variant: "ghost",
|
|
114
|
+
class: i(["hover:bg-gray-250/25!", { "blink-bg": b.value }]),
|
|
115
|
+
"data-testid": "modal-close-btn",
|
|
116
|
+
onClick: m
|
|
117
|
+
}, null, 8, ["class"])
|
|
118
|
+
], 2)
|
|
119
|
+
])) : r("", !0),
|
|
120
|
+
h("div", {
|
|
121
|
+
class: i(["flex-1 overflow-y-auto px-4 pt-4 min-h-0 scrollbar-thin scrollbar-stable", [g.value ? "pb-0" : "pb-3.5", o.bodyClass]])
|
|
122
|
+
}, [
|
|
123
|
+
x.value ? (s(), a("p", oe, F(x.value), 1)) : r("", !0),
|
|
124
|
+
w.value ? (s(), I(Q(w.value), B({ key: 1 }, { ...o.bodyProps, ...e.$attrs }, { close: y }), null, 16)) : v(e.$slots, "default", {
|
|
125
|
+
key: 2,
|
|
126
|
+
close: y
|
|
127
|
+
}, void 0, !0)
|
|
128
|
+
], 2),
|
|
129
|
+
e.$slots.footer ? (s(), a("div", {
|
|
130
|
+
key: 1,
|
|
131
|
+
class: i([o.footerClass, "flex-none flex items-center px-4 py-3 border-t border-border/75 rounded-b-xl bg-body"])
|
|
132
|
+
}, [
|
|
133
|
+
v(e.$slots, "footer", { close: y }, void 0, !0)
|
|
134
|
+
], 2)) : r("", !0)
|
|
135
|
+
], 10, _)) : r("", !0)
|
|
136
|
+
]),
|
|
137
|
+
_: 3
|
|
138
|
+
})
|
|
139
|
+
], 2)) : r("", !0)
|
|
134
140
|
]))
|
|
135
141
|
], 64));
|
|
136
142
|
}
|
|
137
143
|
});
|
|
138
144
|
export {
|
|
139
|
-
|
|
145
|
+
de as default
|
|
140
146
|
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { AvatarSize, AvatarRounded } from '../types';
|
|
2
|
+
export type PresenceType = 'online' | 'offline' | 'busy' | 'dnd' | 'away';
|
|
3
|
+
export type PersonaLabelTheme = 'default' | 'primary' | 'secondary' | 'danger' | 'warning' | 'success' | 'info' | 'muted' | string;
|
|
4
|
+
interface Props {
|
|
5
|
+
src?: string;
|
|
6
|
+
link?: string;
|
|
7
|
+
alt?: string;
|
|
8
|
+
fallback?: string;
|
|
9
|
+
size?: AvatarSize;
|
|
10
|
+
rounded?: AvatarRounded;
|
|
11
|
+
presence?: PresenceType;
|
|
12
|
+
label?: string;
|
|
13
|
+
secondaryLabel?: string;
|
|
14
|
+
labelTheme?: PersonaLabelTheme;
|
|
15
|
+
hideDetails?: boolean;
|
|
16
|
+
class?: string;
|
|
17
|
+
}
|
|
18
|
+
declare const _default: import('vue').DefineComponent<Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<Props> & Readonly<{}>, {
|
|
19
|
+
class: string;
|
|
20
|
+
size: AvatarSize;
|
|
21
|
+
rounded: AvatarRounded;
|
|
22
|
+
labelTheme: PersonaLabelTheme;
|
|
23
|
+
hideDetails: boolean;
|
|
24
|
+
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, true, {}, any>;
|
|
25
|
+
export default _default;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./SidePanel.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
|
-
import
|
|
4
|
-
const
|
|
3
|
+
import a from "../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
+
const f = /* @__PURE__ */ a(o, [["__scopeId", "data-v-d7a169fa"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
f as default
|
|
7
7
|
};
|