vlite3 1.0.3 → 1.0.4
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/components/Chat/ChatBubble.vue.js +147 -0
- package/components/Chat/ChatBubble.vue2.js +4 -0
- package/components/Chat/ChatInterface.vue.js +298 -0
- package/components/Chat/ChatInterface.vue2.js +4 -0
- package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
- package/components/CommandPalette/{CommandPaletteItem.vue.js → CommandPaletteItem.vue2.js} +1 -1
- package/components/Kanban/Kanban.vue.d.ts +3 -1
- package/components/Kanban/Kanban.vue.js +2 -2
- package/components/Kanban/Kanban.vue2.js +55 -35
- package/components/Kanban/types.d.ts +15 -0
- package/components/NavbarCommandPalette.vue.js +1 -1
- package/index.d.ts +1 -0
- package/index.js +23 -21
- package/package.json +1 -1
- package/style.css +1 -1
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { defineComponent as y, computed as b, ref as k, openBlock as t, createElementBlock as l, normalizeClass as o, createVNode as u, createCommentVNode as s, createElementVNode as n, toDisplayString as c, unref as B, createBlock as C, withModifiers as S } from "vue";
|
|
2
|
+
import D from "../Avatar.vue.js";
|
|
3
|
+
import f from "../Button.vue.js";
|
|
4
|
+
import p from "../AttachmentsList/AttachmentsList.vue.js";
|
|
5
|
+
const T = {
|
|
6
|
+
key: 0,
|
|
7
|
+
class: "flex-shrink-0 flex flex-col justify-end pb-1"
|
|
8
|
+
}, A = {
|
|
9
|
+
key: 0,
|
|
10
|
+
class: "mb-1 text-xs text-muted-foreground ml-1"
|
|
11
|
+
}, E = {
|
|
12
|
+
key: 0,
|
|
13
|
+
class: "text-sm whitespace-pre-wrap leading-relaxed"
|
|
14
|
+
}, N = { class: "opacity-0 group-hover/bubble:opacity-100 focus-within:opacity-100 transition-opacity flex gap-1 px-2 pointer-events-none group-hover/bubble:pointer-events-auto focus-within:pointer-events-auto" }, z = {
|
|
15
|
+
key: 1,
|
|
16
|
+
class: "relative flex items-center"
|
|
17
|
+
}, $ = {
|
|
18
|
+
key: 1,
|
|
19
|
+
class: "mt-1 text-[10px] text-muted-foreground mx-1"
|
|
20
|
+
}, M = /* @__PURE__ */ y({
|
|
21
|
+
__name: "ChatBubble",
|
|
22
|
+
props: {
|
|
23
|
+
message: {},
|
|
24
|
+
isSender: { type: Boolean },
|
|
25
|
+
showAvatar: { type: Boolean },
|
|
26
|
+
showUserInfo: { type: Boolean },
|
|
27
|
+
showTimestamp: { type: Boolean },
|
|
28
|
+
allowDeleteAll: { type: Boolean },
|
|
29
|
+
allowEditAll: { type: Boolean },
|
|
30
|
+
confirmDelete: { type: Boolean }
|
|
31
|
+
},
|
|
32
|
+
emits: ["delete", "edit"],
|
|
33
|
+
setup(e, { emit: g }) {
|
|
34
|
+
const r = e, m = g, x = b(() => r.message.timestamp ? new Date(r.message.timestamp).toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" }) : ""), a = k(!1);
|
|
35
|
+
let i = null;
|
|
36
|
+
const v = () => {
|
|
37
|
+
if (r.confirmDelete === !1) {
|
|
38
|
+
m("delete", r.message.id);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
a.value ? (a.value = !1, i && (clearTimeout(i), i = null), m("delete", r.message.id)) : (a.value = !0, i = setTimeout(() => {
|
|
42
|
+
a.value = !1, i = null;
|
|
43
|
+
}, 3e3));
|
|
44
|
+
}, h = () => {
|
|
45
|
+
a.value = !1, i && (clearTimeout(i), i = null);
|
|
46
|
+
};
|
|
47
|
+
return (w, d) => (t(), l("div", {
|
|
48
|
+
class: o(["flex w-full gap-3 group", e.isSender ? "flex-row-reverse" : "flex-row"])
|
|
49
|
+
}, [
|
|
50
|
+
e.showAvatar ? (t(), l("div", T, [
|
|
51
|
+
u(D, {
|
|
52
|
+
src: e.message.avatar,
|
|
53
|
+
alt: e.message.senderName,
|
|
54
|
+
size: "sm"
|
|
55
|
+
}, null, 8, ["src", "alt"])
|
|
56
|
+
])) : s("", !0),
|
|
57
|
+
n("div", {
|
|
58
|
+
class: o(["flex flex-col max-w-[85%] md:max-w-[75%]", e.isSender ? "items-end" : "items-start"])
|
|
59
|
+
}, [
|
|
60
|
+
e.showUserInfo && e.message.senderName && !e.isSender ? (t(), l("div", A, c(e.message.senderName), 1)) : s("", !0),
|
|
61
|
+
n("div", {
|
|
62
|
+
class: o(["relative flex items-center group/bubble", e.isSender ? "flex-row-reverse" : "flex-row"])
|
|
63
|
+
}, [
|
|
64
|
+
n("div", {
|
|
65
|
+
class: o(["px-3.5 py-2.5 rounded-2xl break-words relative min-w-[60px]", [
|
|
66
|
+
e.isSender ? "bg-primary text-primary-foreground rounded-br-sm" : "bg-muted text-foreground rounded-bl-sm"
|
|
67
|
+
]])
|
|
68
|
+
}, [
|
|
69
|
+
e.message.text ? (t(), l("p", E, c(e.message.text), 1)) : s("", !0),
|
|
70
|
+
e.message.attachments && e.message.attachments.length > 0 ? (t(), l("div", {
|
|
71
|
+
key: 1,
|
|
72
|
+
class: o({ "mt-2": e.message.text })
|
|
73
|
+
}, [
|
|
74
|
+
u(B(p), {
|
|
75
|
+
attachments: e.message.attachments,
|
|
76
|
+
variant: "inline",
|
|
77
|
+
"can-view": !0,
|
|
78
|
+
"can-download": !0
|
|
79
|
+
}, null, 8, ["attachments"])
|
|
80
|
+
], 2)) : s("", !0),
|
|
81
|
+
e.message.isEdited ? (t(), l("div", {
|
|
82
|
+
key: 2,
|
|
83
|
+
class: o(["text-[10px] opacity-70 mt-0.5 text-right", e.isSender ? "text-primary-foreground" : "text-muted-foreground"])
|
|
84
|
+
}, " (edited) ", 2)) : s("", !0)
|
|
85
|
+
], 2),
|
|
86
|
+
n("div", N, [
|
|
87
|
+
e.isSender || e.allowEditAll ? (t(), C(f, {
|
|
88
|
+
key: 0,
|
|
89
|
+
variant: "ghost",
|
|
90
|
+
size: "xs",
|
|
91
|
+
icon: "lucide:pencil",
|
|
92
|
+
rounded: "full",
|
|
93
|
+
class: "text-muted-foreground hover:text-foreground h-7 w-7",
|
|
94
|
+
onClick: d[0] || (d[0] = (j) => m("edit", e.message)),
|
|
95
|
+
"aria-label": "Edit message"
|
|
96
|
+
})) : s("", !0),
|
|
97
|
+
e.isSender || e.allowDeleteAll ? (t(), l("div", z, [
|
|
98
|
+
u(f, {
|
|
99
|
+
variant: "ghost",
|
|
100
|
+
size: "xs",
|
|
101
|
+
icon: a.value ? "lucide:check" : "lucide:trash-2",
|
|
102
|
+
rounded: "full",
|
|
103
|
+
class: "h-7 w-7 transition-colors",
|
|
104
|
+
onClick: v,
|
|
105
|
+
"aria-label": a.value ? "Confirm delete" : "Delete message"
|
|
106
|
+
}, null, 8, ["icon", "aria-label"]),
|
|
107
|
+
a.value ? (t(), l("button", {
|
|
108
|
+
key: 0,
|
|
109
|
+
class: "absolute -top-1.5 -right-1.5 w-3.5 h-3.5 rounded-full bg-muted border border-border flex items-center justify-center text-muted-foreground hover:text-foreground transition-colors",
|
|
110
|
+
onClick: S(h, ["stop"]),
|
|
111
|
+
"aria-label": "Cancel delete"
|
|
112
|
+
}, [...d[1] || (d[1] = [
|
|
113
|
+
n("svg", {
|
|
114
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
115
|
+
viewBox: "0 0 24 24",
|
|
116
|
+
fill: "none",
|
|
117
|
+
stroke: "currentColor",
|
|
118
|
+
"stroke-width": "3",
|
|
119
|
+
"stroke-linecap": "round",
|
|
120
|
+
"stroke-linejoin": "round",
|
|
121
|
+
class: "w-2 h-2"
|
|
122
|
+
}, [
|
|
123
|
+
n("line", {
|
|
124
|
+
x1: "18",
|
|
125
|
+
y1: "6",
|
|
126
|
+
x2: "6",
|
|
127
|
+
y2: "18"
|
|
128
|
+
}),
|
|
129
|
+
n("line", {
|
|
130
|
+
x1: "6",
|
|
131
|
+
y1: "6",
|
|
132
|
+
x2: "18",
|
|
133
|
+
y2: "18"
|
|
134
|
+
})
|
|
135
|
+
], -1)
|
|
136
|
+
])])) : s("", !0)
|
|
137
|
+
])) : s("", !0)
|
|
138
|
+
])
|
|
139
|
+
], 2),
|
|
140
|
+
e.showTimestamp && e.message.timestamp ? (t(), l("div", $, c(x.value), 1)) : s("", !0)
|
|
141
|
+
], 2)
|
|
142
|
+
], 2));
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
export {
|
|
146
|
+
M as default
|
|
147
|
+
};
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
import { defineComponent as P, ref as m, onMounted as O, onUnmounted as q, watch as G, nextTick as U, computed as J, openBlock as d, createElementBlock as v, createElementVNode as l, createTextVNode as Q, createCommentVNode as k, Fragment as M, renderList as F, createBlock as W, toDisplayString as H, createVNode as g, unref as x, withCtx as X, withDirectives as Y, vModelText as Z } from "vue";
|
|
2
|
+
import ee from "./ChatBubble.vue.js";
|
|
3
|
+
import N from "../Button.vue.js";
|
|
4
|
+
import V from "../Icon.vue.js";
|
|
5
|
+
import le from "../FilePicker/FilePicker.vue.js";
|
|
6
|
+
import { useFileUpload as te } from "../Form/composables/useFileUpload.js";
|
|
7
|
+
const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent" }, oe = {
|
|
8
|
+
key: 0,
|
|
9
|
+
class: "py-2 mb-2 text-center text-xs text-muted-foreground flex justify-center items-center gap-2"
|
|
10
|
+
}, se = {
|
|
11
|
+
key: 1,
|
|
12
|
+
class: "flex items-center justify-center h-full text-muted-foreground text-sm"
|
|
13
|
+
}, re = { class: "flex flex-col gap-2 pb-2" }, ie = { class: "p-3 shrink-0 bg-transparent flex flex-col gap-1" }, ne = {
|
|
14
|
+
key: 0,
|
|
15
|
+
class: "flex items-center justify-between px-3 py-1.5 bg-muted/50 rounded-lg text-xs text-muted-foreground border border-border animate-in fade-in slide-in-from-bottom-2"
|
|
16
|
+
}, de = { class: "flex items-center gap-2" }, ue = { class: "truncate max-w-[200px] sm:max-w-[300px] md:max-w-[400px]" }, ce = { class: "relative flex flex-col bg-card border border-border rounded-xl shadow-sm focus-within:border-primary transition-colors overflow-hidden" }, fe = {
|
|
17
|
+
key: 0,
|
|
18
|
+
class: "flex flex-wrap gap-2 p-3 bg-muted/10 border-b border-border"
|
|
19
|
+
}, me = ["title"], ve = ["onClick", "disabled"], he = { class: "flex items-end gap-2 p-1" }, pe = { class: "shrink-0 mb-1 ml-1" }, ge = ["placeholder", "disabled"], xe = { class: "shrink-0 mb-1 mr-1" }, Ae = /* @__PURE__ */ P({
|
|
20
|
+
__name: "ChatInterface",
|
|
21
|
+
props: {
|
|
22
|
+
data: {},
|
|
23
|
+
currentUserId: {},
|
|
24
|
+
showAvatar: { type: Boolean, default: !0 },
|
|
25
|
+
showUserInfo: { type: Boolean, default: !0 },
|
|
26
|
+
showTimestamp: { type: Boolean, default: !0 },
|
|
27
|
+
placeholder: { default: "Type a message..." },
|
|
28
|
+
isLoadingMore: { type: Boolean, default: !1 },
|
|
29
|
+
allowDeleteAll: { type: Boolean, default: !1 },
|
|
30
|
+
allowEditAll: { type: Boolean, default: !1 },
|
|
31
|
+
confirmDelete: { type: Boolean, default: !0 },
|
|
32
|
+
folderId: {},
|
|
33
|
+
maxFileSize: {}
|
|
34
|
+
},
|
|
35
|
+
emits: ["add", "delete", "edit", "refetch"],
|
|
36
|
+
setup(s, { emit: _ }) {
|
|
37
|
+
const w = s, C = _, u = m(null), T = m(null), r = m(null), c = m(""), E = m(0), y = m(!1), i = m(null), o = m([]), { handleUploadFiles: L, loading: f } = te();
|
|
38
|
+
let b = null;
|
|
39
|
+
O(() => {
|
|
40
|
+
T.value && u.value && (b = new IntersectionObserver(
|
|
41
|
+
([e]) => {
|
|
42
|
+
e.isIntersecting && w.data.length > 0 && !w.isLoadingMore && (E.value = u.value.scrollHeight, y.value = !0, C("refetch"));
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
root: u.value,
|
|
46
|
+
threshold: 0
|
|
47
|
+
}
|
|
48
|
+
), b.observe(T.value)), A();
|
|
49
|
+
}), q(() => {
|
|
50
|
+
b && b.disconnect();
|
|
51
|
+
}), G(
|
|
52
|
+
() => w.data.length,
|
|
53
|
+
async (e, t) => {
|
|
54
|
+
const a = u.value;
|
|
55
|
+
if (a)
|
|
56
|
+
if (await U(), y.value && e > (t || 0)) {
|
|
57
|
+
const h = a.scrollHeight - E.value;
|
|
58
|
+
h > 0 && (a.scrollTop = a.scrollTop + h), y.value = !1;
|
|
59
|
+
} else !y.value && e > (t || 0) && A();
|
|
60
|
+
}
|
|
61
|
+
);
|
|
62
|
+
const A = async () => {
|
|
63
|
+
await U(), u.value && u.value.scrollTo({
|
|
64
|
+
top: u.value.scrollHeight,
|
|
65
|
+
behavior: "smooth"
|
|
66
|
+
});
|
|
67
|
+
}, S = () => {
|
|
68
|
+
if (!r.value) return;
|
|
69
|
+
r.value.style.height = "auto";
|
|
70
|
+
const e = r.value.scrollHeight;
|
|
71
|
+
r.value.style.height = `${Math.min(e, 120)}px`;
|
|
72
|
+
}, $ = (e) => {
|
|
73
|
+
e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), f.value || D()) : e.key === "Escape" && i.value && (e.preventDefault(), z());
|
|
74
|
+
}, R = (e) => {
|
|
75
|
+
i.value = e, c.value = e.text, r.value && (r.value.focus(), U(() => {
|
|
76
|
+
S();
|
|
77
|
+
}));
|
|
78
|
+
}, z = () => {
|
|
79
|
+
i.value = null, c.value = "", r.value && (r.value.style.height = "auto", r.value.focus());
|
|
80
|
+
}, I = J(() => {
|
|
81
|
+
const e = !!c.value.trim(), t = Array.isArray(o.value) && o.value.length > 0;
|
|
82
|
+
return (e || t) && !f.value;
|
|
83
|
+
}), j = (e) => {
|
|
84
|
+
f.value || Array.isArray(o.value) && (o.value.splice(e, 1), o.value.length === 0 && (o.value = []));
|
|
85
|
+
}, D = async () => {
|
|
86
|
+
if (!I.value) return;
|
|
87
|
+
const e = c.value.trim(), t = Array.isArray(o.value) && o.value.length > 0, a = !!i.value;
|
|
88
|
+
if (a && i.value)
|
|
89
|
+
e !== i.value.text && C("edit", { ...i.value, text: e, isEdited: !0 }), i.value = null, c.value = "";
|
|
90
|
+
else {
|
|
91
|
+
let n = [];
|
|
92
|
+
if (t) {
|
|
93
|
+
const h = o.value.map((B) => B.file).filter(Boolean);
|
|
94
|
+
if (h.length > 0) {
|
|
95
|
+
const B = await L(h, w.folderId);
|
|
96
|
+
n = o.value.map((p, K) => ({
|
|
97
|
+
fileUrl: B[K] || "",
|
|
98
|
+
fileName: p.fileName,
|
|
99
|
+
fileType: p.fileType,
|
|
100
|
+
fileSize: p.fileSize
|
|
101
|
+
})).filter((p) => p.fileUrl !== null && p.fileUrl !== "");
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
C("add", e, n.length > 0 ? n : void 0), o.value = [], c.value = "";
|
|
105
|
+
}
|
|
106
|
+
r.value && (r.value.style.height = "auto", r.value.focus()), a || A();
|
|
107
|
+
};
|
|
108
|
+
return (e, t) => (d(), v("div", ae, [
|
|
109
|
+
l("div", {
|
|
110
|
+
ref_key: "messageListRef",
|
|
111
|
+
ref: u,
|
|
112
|
+
class: "flex-1 overflow-y-auto px-4 py-4 scrollbar-thin scrollbar-stable",
|
|
113
|
+
role: "log",
|
|
114
|
+
"aria-live": "polite",
|
|
115
|
+
"aria-label": "Chat messages",
|
|
116
|
+
style: { "will-change": "transform", contain: "layout style" }
|
|
117
|
+
}, [
|
|
118
|
+
l("div", {
|
|
119
|
+
ref_key: "observerTargetRef",
|
|
120
|
+
ref: T,
|
|
121
|
+
class: "h-1 w-full shrink-0"
|
|
122
|
+
}, null, 512),
|
|
123
|
+
s.isLoadingMore ? (d(), v("div", oe, [...t[3] || (t[3] = [
|
|
124
|
+
l("svg", {
|
|
125
|
+
class: "animate-spin h-4 w-4 text-primary",
|
|
126
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
127
|
+
fill: "none",
|
|
128
|
+
viewBox: "0 0 24 24"
|
|
129
|
+
}, [
|
|
130
|
+
l("circle", {
|
|
131
|
+
class: "opacity-25",
|
|
132
|
+
cx: "12",
|
|
133
|
+
cy: "12",
|
|
134
|
+
r: "10",
|
|
135
|
+
stroke: "currentColor",
|
|
136
|
+
"stroke-width": "4"
|
|
137
|
+
}),
|
|
138
|
+
l("path", {
|
|
139
|
+
class: "opacity-75",
|
|
140
|
+
fill: "currentColor",
|
|
141
|
+
d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
|
142
|
+
})
|
|
143
|
+
], -1),
|
|
144
|
+
Q(" Loading older messages... ", -1)
|
|
145
|
+
])])) : k("", !0),
|
|
146
|
+
!s.data.length && !s.isLoadingMore ? (d(), v("div", se, " No messages yet ")) : k("", !0),
|
|
147
|
+
l("div", re, [
|
|
148
|
+
(d(!0), v(M, null, F(s.data, (a) => (d(), W(ee, {
|
|
149
|
+
key: a.id,
|
|
150
|
+
message: a,
|
|
151
|
+
"is-sender": a.senderId === s.currentUserId,
|
|
152
|
+
"show-avatar": s.showAvatar,
|
|
153
|
+
"show-user-info": s.showUserInfo,
|
|
154
|
+
"show-timestamp": s.showTimestamp,
|
|
155
|
+
"allow-delete-all": s.allowDeleteAll,
|
|
156
|
+
"allow-edit-all": s.allowEditAll,
|
|
157
|
+
"confirm-delete": s.confirmDelete,
|
|
158
|
+
onDelete: t[0] || (t[0] = (n) => e.$emit("delete", n)),
|
|
159
|
+
onEdit: R
|
|
160
|
+
}, null, 8, ["message", "is-sender", "show-avatar", "show-user-info", "show-timestamp", "allow-delete-all", "allow-edit-all", "confirm-delete"]))), 128))
|
|
161
|
+
])
|
|
162
|
+
], 512),
|
|
163
|
+
l("div", ie, [
|
|
164
|
+
i.value ? (d(), v("div", ne, [
|
|
165
|
+
l("div", de, [
|
|
166
|
+
t[4] || (t[4] = l("svg", {
|
|
167
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
168
|
+
class: "h-3.5 w-3.5 text-primary shrink-0",
|
|
169
|
+
viewBox: "0 0 24 24",
|
|
170
|
+
fill: "none",
|
|
171
|
+
stroke: "currentColor",
|
|
172
|
+
"stroke-width": "2",
|
|
173
|
+
"stroke-linecap": "round",
|
|
174
|
+
"stroke-linejoin": "round"
|
|
175
|
+
}, [
|
|
176
|
+
l("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" })
|
|
177
|
+
], -1)),
|
|
178
|
+
l("span", ue, "Editing: " + H(i.value.text), 1)
|
|
179
|
+
]),
|
|
180
|
+
l("div", { class: "flex items-center gap-2 shrink-0" }, [
|
|
181
|
+
t[6] || (t[6] = l("span", { class: "text-[10px] hidden sm:inline-block opacity-60 mr-1" }, "Press Esc to cancel", -1)),
|
|
182
|
+
l("button", {
|
|
183
|
+
onClick: z,
|
|
184
|
+
class: "hover:text-foreground p-0.5 rounded-full hover:bg-muted transition-colors",
|
|
185
|
+
"aria-label": "Cancel editing"
|
|
186
|
+
}, [...t[5] || (t[5] = [
|
|
187
|
+
l("svg", {
|
|
188
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
189
|
+
class: "h-4 w-4",
|
|
190
|
+
viewBox: "0 0 24 24",
|
|
191
|
+
fill: "none",
|
|
192
|
+
stroke: "currentColor",
|
|
193
|
+
"stroke-width": "2",
|
|
194
|
+
"stroke-linecap": "round",
|
|
195
|
+
"stroke-linejoin": "round"
|
|
196
|
+
}, [
|
|
197
|
+
l("line", {
|
|
198
|
+
x1: "18",
|
|
199
|
+
y1: "6",
|
|
200
|
+
x2: "6",
|
|
201
|
+
y2: "18"
|
|
202
|
+
}),
|
|
203
|
+
l("line", {
|
|
204
|
+
x1: "6",
|
|
205
|
+
y1: "6",
|
|
206
|
+
x2: "18",
|
|
207
|
+
y2: "18"
|
|
208
|
+
})
|
|
209
|
+
], -1)
|
|
210
|
+
])])
|
|
211
|
+
])
|
|
212
|
+
])) : k("", !0),
|
|
213
|
+
l("div", ce, [
|
|
214
|
+
Array.isArray(o.value) && o.value.length > 0 ? (d(), v("div", fe, [
|
|
215
|
+
(d(!0), v(M, null, F(o.value, (a, n) => (d(), v("div", {
|
|
216
|
+
key: n,
|
|
217
|
+
class: "relative flex items-center gap-2 bg-background border border-border rounded-md p-1.5 pr-8 max-w-[200px] shadow-sm"
|
|
218
|
+
}, [
|
|
219
|
+
g(V, {
|
|
220
|
+
icon: "lucide:file-text",
|
|
221
|
+
class: "w-4 h-4 text-primary shrink-0"
|
|
222
|
+
}),
|
|
223
|
+
l("span", {
|
|
224
|
+
class: "text-xs truncate font-medium",
|
|
225
|
+
title: a.fileName
|
|
226
|
+
}, H(a.fileName), 9, me),
|
|
227
|
+
l("button", {
|
|
228
|
+
onClick: (h) => j(n),
|
|
229
|
+
disabled: x(f),
|
|
230
|
+
class: "absolute right-1 top-1/2 -translate-y-1/2 p-1 text-muted-foreground hover:text-destructive rounded-full hover:bg-muted/50 transition-colors disabled:opacity-50 disabled:cursor-not-allowed"
|
|
231
|
+
}, [
|
|
232
|
+
g(V, {
|
|
233
|
+
icon: "lucide:x",
|
|
234
|
+
class: "w-3 h-3"
|
|
235
|
+
})
|
|
236
|
+
], 8, ve)
|
|
237
|
+
]))), 128))
|
|
238
|
+
])) : k("", !0),
|
|
239
|
+
l("div", he, [
|
|
240
|
+
l("div", pe, [
|
|
241
|
+
g(le, {
|
|
242
|
+
modelValue: o.value,
|
|
243
|
+
"onUpdate:modelValue": t[1] || (t[1] = (a) => o.value = a),
|
|
244
|
+
"multi-select": !0,
|
|
245
|
+
"max-size": s.maxFileSize,
|
|
246
|
+
"return-format": "file"
|
|
247
|
+
}, {
|
|
248
|
+
trigger: X(({ trigger: a }) => [
|
|
249
|
+
g(N, {
|
|
250
|
+
variant: "ghost",
|
|
251
|
+
size: "sm",
|
|
252
|
+
icon: "lucide:paperclip",
|
|
253
|
+
rounded: "full",
|
|
254
|
+
class: "h-8 w-8 px-0 text-muted-foreground hover:text-foreground transition-colors",
|
|
255
|
+
onClick: a,
|
|
256
|
+
disabled: x(f),
|
|
257
|
+
"aria-label": "Attach files"
|
|
258
|
+
}, null, 8, ["onClick", "disabled"])
|
|
259
|
+
]),
|
|
260
|
+
_: 1
|
|
261
|
+
}, 8, ["modelValue", "max-size"])
|
|
262
|
+
]),
|
|
263
|
+
Y(l("textarea", {
|
|
264
|
+
ref_key: "textareaRef",
|
|
265
|
+
ref: r,
|
|
266
|
+
"onUpdate:modelValue": t[2] || (t[2] = (a) => c.value = a),
|
|
267
|
+
placeholder: s.placeholder,
|
|
268
|
+
disabled: x(f),
|
|
269
|
+
class: "flex-1 max-h-[120px] min-h-[20px] w-full resize-none bg-transparent px-2 py-2 text-sm text-foreground outline-none placeholder:text-muted-foreground scrollbar-thin disabled:opacity-50",
|
|
270
|
+
rows: "1",
|
|
271
|
+
"aria-label": "Message input",
|
|
272
|
+
onInput: S,
|
|
273
|
+
onKeydown: $
|
|
274
|
+
}, null, 40, ge), [
|
|
275
|
+
[Z, c.value]
|
|
276
|
+
]),
|
|
277
|
+
l("div", xe, [
|
|
278
|
+
g(N, {
|
|
279
|
+
variant: "primary",
|
|
280
|
+
size: "sm",
|
|
281
|
+
icon: x(f) ? "lucide:loader-2" : i.value ? "lucide:check" : "lucide:send",
|
|
282
|
+
loading: x(f),
|
|
283
|
+
rounded: "full",
|
|
284
|
+
class: "h-8 w-8 px-0 transition-transform active:scale-95",
|
|
285
|
+
disabled: !I.value,
|
|
286
|
+
onClick: D,
|
|
287
|
+
"aria-label": i.value ? "Save changes" : "Send message"
|
|
288
|
+
}, null, 8, ["icon", "loading", "disabled", "aria-label"])
|
|
289
|
+
])
|
|
290
|
+
])
|
|
291
|
+
])
|
|
292
|
+
])
|
|
293
|
+
]));
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
export {
|
|
297
|
+
Ae as default
|
|
298
|
+
};
|
|
@@ -4,7 +4,7 @@ import k from "../Icon.vue.js";
|
|
|
4
4
|
import { $t as E } from "../../utils/i18n.js";
|
|
5
5
|
import { useCommandPaletteItems as Y } from "./useCommandPaletteItems.js";
|
|
6
6
|
import { useCommandPaletteNav as Z } from "./useCommandPaletteNav.js";
|
|
7
|
-
import ee from "./CommandPaletteItem.
|
|
7
|
+
import ee from "./CommandPaletteItem.vue2.js";
|
|
8
8
|
const te = { class: "command-palette-content flex flex-col w-full h-full max-h-[70vh]" }, oe = { class: "flex items-center gap-3 px-4 py-3 border-b border-border/60 shrink-0" }, se = ["placeholder"], ne = ["aria-label"], re = {
|
|
9
9
|
key: 0,
|
|
10
10
|
class: "flex flex-col items-center justify-center py-14 px-6 text-center select-none",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { KanbanColumn, KanbanLoadDataResult, KanbanChangeEvent } from './types';
|
|
1
|
+
import { KanbanColumn, KanbanLoadDataResult, KanbanChangeEvent, KanbanMoveEvent } from './types';
|
|
2
2
|
type __VLS_Props = {
|
|
3
3
|
columns: KanbanColumn[];
|
|
4
4
|
group?: string;
|
|
@@ -42,9 +42,11 @@ declare function __VLS_template(): {
|
|
|
42
42
|
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
43
43
|
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
|
|
44
44
|
change: (payload: KanbanChangeEvent) => any;
|
|
45
|
+
move: (payload: KanbanMoveEvent) => any;
|
|
45
46
|
"update:data": (val: Record<string | number, any[]>) => any;
|
|
46
47
|
}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
|
|
47
48
|
onChange?: (payload: KanbanChangeEvent) => any;
|
|
49
|
+
onMove?: (payload: KanbanMoveEvent) => any;
|
|
48
50
|
"onUpdate:data"?: (val: Record<string | number, any[]>) => any;
|
|
49
51
|
}>, {
|
|
50
52
|
class: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./Kanban.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const p = /* @__PURE__ */ t(o, [["__scopeId", "data-v-50c60912"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
p as default
|
|
7
7
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
3
|
-
const
|
|
1
|
+
import { defineComponent as C, ref as h, openBlock as c, createElementBlock as i, normalizeClass as b, Fragment as x, renderList as k, createBlock as w, withCtx as r, renderSlot as m, mergeProps as u } from "vue";
|
|
2
|
+
import K from "./KanbanBoard.vue.js";
|
|
3
|
+
const $ = /* @__PURE__ */ C({
|
|
4
4
|
__name: "Kanban",
|
|
5
5
|
props: {
|
|
6
6
|
columns: {},
|
|
@@ -15,42 +15,62 @@ const K = /* @__PURE__ */ b({
|
|
|
15
15
|
ghostClass: {},
|
|
16
16
|
class: { default: "h-full w-full" }
|
|
17
17
|
},
|
|
18
|
-
emits: ["change", "update:data"],
|
|
19
|
-
setup(
|
|
20
|
-
const s =
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
18
|
+
emits: ["change", "move", "update:data"],
|
|
19
|
+
setup(t, { emit: v }) {
|
|
20
|
+
const d = t, s = v, o = h({}), f = (e) => {
|
|
21
|
+
if (s("change", e), e.type === "remove" ? o.value.remove = { columnId: e.columnId, event: e.event } : e.type === "add" ? o.value.add = { columnId: e.columnId, event: e.event } : e.type === "update" && s("move", {
|
|
22
|
+
itemId: e.event.data?.[d.itemKey] || e.event.item?._underlying_vm_?.[d.itemKey],
|
|
23
|
+
item: e.event.data,
|
|
24
|
+
fromColumnId: e.columnId,
|
|
25
|
+
toColumnId: e.columnId,
|
|
26
|
+
oldIndex: e.event.oldIndex,
|
|
27
|
+
newIndex: e.event.newIndex
|
|
28
|
+
}), o.value.remove && o.value.add) {
|
|
29
|
+
const { remove: l, add: a } = o.value;
|
|
30
|
+
s("move", {
|
|
31
|
+
itemId: a.event.data?.[d.itemKey],
|
|
32
|
+
item: a.event.data,
|
|
33
|
+
fromColumnId: l.columnId,
|
|
34
|
+
toColumnId: a.columnId,
|
|
35
|
+
oldIndex: l.event.oldIndex,
|
|
36
|
+
newIndex: a.event.newIndex
|
|
37
|
+
}), o.value = {};
|
|
38
|
+
}
|
|
39
|
+
setTimeout(() => {
|
|
40
|
+
o.value = {};
|
|
41
|
+
}, 100);
|
|
42
|
+
}, g = (e, l) => {
|
|
43
|
+
d.data && s("update:data", { ...d.data, [e]: l });
|
|
44
|
+
}, I = (e) => d.data ? d.data[e] || [] : [];
|
|
45
|
+
return (e, l) => (c(), i("div", {
|
|
46
|
+
class: b(["flex gap-4 overflow-x-auto p-1 custom-scrollbar-x scrollable-container", d.class])
|
|
27
47
|
}, [
|
|
28
|
-
(
|
|
29
|
-
key:
|
|
30
|
-
column:
|
|
31
|
-
group:
|
|
32
|
-
"item-key":
|
|
33
|
-
"load-data":
|
|
34
|
-
"column-data":
|
|
35
|
-
"board-class":
|
|
36
|
-
"header-class":
|
|
37
|
-
"body-class":
|
|
38
|
-
"draggable-class":
|
|
39
|
-
"ghost-class":
|
|
40
|
-
onChange:
|
|
41
|
-
"onUpdate:columnData": (
|
|
48
|
+
(c(!0), i(x, null, k(t.columns, (a) => (c(), w(K, {
|
|
49
|
+
key: a.id,
|
|
50
|
+
column: a,
|
|
51
|
+
group: t.group,
|
|
52
|
+
"item-key": t.itemKey,
|
|
53
|
+
"load-data": t.loadData,
|
|
54
|
+
"column-data": I(a.id),
|
|
55
|
+
"board-class": t.boardClass,
|
|
56
|
+
"header-class": t.headerClass,
|
|
57
|
+
"body-class": t.bodyClass,
|
|
58
|
+
"draggable-class": t.draggableClass,
|
|
59
|
+
"ghost-class": t.ghostClass,
|
|
60
|
+
onChange: f,
|
|
61
|
+
"onUpdate:columnData": (n) => g(a.id, n)
|
|
42
62
|
}, {
|
|
43
|
-
header:
|
|
44
|
-
|
|
63
|
+
header: r((n) => [
|
|
64
|
+
m(e.$slots, "column-header", u({ ref_for: !0 }, n), void 0, !0)
|
|
45
65
|
]),
|
|
46
|
-
"prepend-item":
|
|
47
|
-
|
|
66
|
+
"prepend-item": r((n) => [
|
|
67
|
+
m(e.$slots, "prepend-item", u({ ref_for: !0 }, n), void 0, !0)
|
|
48
68
|
]),
|
|
49
|
-
item:
|
|
50
|
-
|
|
69
|
+
item: r((n) => [
|
|
70
|
+
m(e.$slots, "item", u({ ref_for: !0 }, n), void 0, !0)
|
|
51
71
|
]),
|
|
52
|
-
"append-item":
|
|
53
|
-
|
|
72
|
+
"append-item": r((n) => [
|
|
73
|
+
m(e.$slots, "append-item", u({ ref_for: !0 }, n), void 0, !0)
|
|
54
74
|
]),
|
|
55
75
|
_: 3
|
|
56
76
|
}, 8, ["column", "group", "item-key", "load-data", "column-data", "board-class", "header-class", "body-class", "draggable-class", "ghost-class", "onUpdate:columnData"]))), 128))
|
|
@@ -58,5 +78,5 @@ const K = /* @__PURE__ */ b({
|
|
|
58
78
|
}
|
|
59
79
|
});
|
|
60
80
|
export {
|
|
61
|
-
|
|
81
|
+
$ as default
|
|
62
82
|
};
|
|
@@ -13,11 +13,26 @@ export interface KanbanColumn {
|
|
|
13
13
|
titleI18n?: string;
|
|
14
14
|
[key: string]: any;
|
|
15
15
|
}
|
|
16
|
+
/**
|
|
17
|
+
* KanbanChangeEvent represents the low-level DnD events
|
|
18
|
+
*/
|
|
16
19
|
export interface KanbanChangeEvent {
|
|
17
20
|
type: 'add' | 'remove' | 'update';
|
|
18
21
|
event: any;
|
|
19
22
|
columnId: string | number;
|
|
20
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* KanbanMoveEvent represents a consolidated high-level move
|
|
26
|
+
* standard for production API updates.
|
|
27
|
+
*/
|
|
28
|
+
export interface KanbanMoveEvent {
|
|
29
|
+
itemId: string | number;
|
|
30
|
+
item: any;
|
|
31
|
+
fromColumnId: string | number;
|
|
32
|
+
toColumnId: string | number;
|
|
33
|
+
oldIndex: number;
|
|
34
|
+
newIndex: number;
|
|
35
|
+
}
|
|
21
36
|
export interface KanbanProps {
|
|
22
37
|
columns: KanbanColumn[];
|
|
23
38
|
group?: string;
|
|
@@ -3,7 +3,7 @@ import L from "./Icon.vue.js";
|
|
|
3
3
|
import v from "./Modal.vue.js";
|
|
4
4
|
import N from "./CommandPalette/CommandPaletteContent.vue.js";
|
|
5
5
|
import { $t as R } from "../utils/i18n.js";
|
|
6
|
-
/* empty css
|
|
6
|
+
/* empty css */
|
|
7
7
|
const U = { class: "block truncate -text-fs-1.5" }, V = { class: "ml-auto inline-flex items-center gap-0.5 px-1.5 py-0.5 rounded text-[10px] font-mono font-medium border border-border/80 bg-background text-muted-foreground ml-1" }, q = /* @__PURE__ */ x({
|
|
8
8
|
__name: "NavbarCommandPalette",
|
|
9
9
|
props: {
|
package/index.d.ts
CHANGED
package/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { default as f } from "vue3-google-signin";
|
|
2
2
|
import { deepMerge as l } from "./utils/object.js";
|
|
3
|
-
import { camelCase as p, capitalize as d, copyToClipboard as u, debounce as x, delay as i, downloadFile as n, flattenArray as c, formatCurrency as T, getDefaultDateRange as S, getUniqueId as g, isAppleDevice as b, isEmpty as C, randomNumber as P, removeExtraProperties as I, slugify as D, throttle as F, truncate as
|
|
4
|
-
import { lazySearch as
|
|
3
|
+
import { camelCase as p, capitalize as d, copyToClipboard as u, debounce as x, delay as i, downloadFile as n, flattenArray as c, formatCurrency as T, getDefaultDateRange as S, getUniqueId as g, isAppleDevice as b, isEmpty as C, randomNumber as P, removeExtraProperties as I, slugify as D, throttle as F, truncate as h } from "./utils/functions.js";
|
|
4
|
+
import { lazySearch as N, resetSearchIndex as A, search as B } from "./utils/search.util.js";
|
|
5
5
|
import { env as w } from "./utils/env.js";
|
|
6
6
|
import { $t as E } from "./utils/i18n.js";
|
|
7
7
|
import { default as L } from "./components/Chip/Chip.vue.js";
|
|
@@ -27,8 +27,8 @@ import { default as Se } from "./components/Screen/ScreenFilter.vue.js";
|
|
|
27
27
|
import { default as be } from "./components/Screen/components/ScreenQuickFilters.vue.js";
|
|
28
28
|
import { default as Pe } from "./components/Heatmap/Heatmap.vue.js";
|
|
29
29
|
import { default as De } from "./components/Masonry/Masonry.vue.js";
|
|
30
|
-
import { MASONRY_BREAKPOINTS as
|
|
31
|
-
import { default as
|
|
30
|
+
import { MASONRY_BREAKPOINTS as he } from "./components/Masonry/types.js";
|
|
31
|
+
import { default as Ne } from "./components/Spinner/Spinner.vue.js";
|
|
32
32
|
import { default as Be } from "./components/Barcode/Barcode.vue.js";
|
|
33
33
|
import { barcodesConstants as we } from "./components/Barcode/types.js";
|
|
34
34
|
import { default as Ee } from "./components/Carousel/Carousel.vue.js";
|
|
@@ -52,7 +52,7 @@ import { default as no } from "./components/List/ListFieldRow.vue.js";
|
|
|
52
52
|
import { formatDate as To, formatNumber as So, formatPrice as go, getObjectValue as bo, getStatusColorClass as Co } from "./components/List/utils.js";
|
|
53
53
|
import { default as Io } from "./components/Empty/Empty.vue.js";
|
|
54
54
|
import { default as Fo } from "./components/Accordion/Accordion.vue.js";
|
|
55
|
-
import { default as
|
|
55
|
+
import { default as vo } from "./components/Accordion/AccordionItem.vue.js";
|
|
56
56
|
import { default as Ao } from "./components/Accordion/AccordionTrigger.vue.js";
|
|
57
57
|
import { default as ko } from "./components/Accordion/AccordionContent.vue.js";
|
|
58
58
|
import { default as yo } from "./components/ChoiceBox/ChoiceBox.vue.js";
|
|
@@ -78,7 +78,7 @@ import { default as cr } from "./components/PermissionMatrix/PermissionEditor.vu
|
|
|
78
78
|
import { useAdvancedKeyStroke as Sr, useKeyStroke as gr } from "./composables/useKeyStroke.js";
|
|
79
79
|
import { vScrollReveal as Cr } from "./directives/vScrollReveal.js";
|
|
80
80
|
import { default as Ir } from "./components/AvatarUploader/AvatarUploader.vue.js";
|
|
81
|
-
import { configure as Fr, pauseTimers as
|
|
81
|
+
import { configure as Fr, pauseTimers as hr, removeToast as vr, resumeTimers as Nr, showToast as Ar, toast as Br, useNotifications as kr } from "./composables/useNotifications.js";
|
|
82
82
|
import { default as yr } from "./components/Timeline/Timeline.vue.js";
|
|
83
83
|
import { default as Mr } from "./components/Timeline/TimelineItem.vue.js";
|
|
84
84
|
import { default as Rr } from "./components/Timeline/TimelineIndicator.vue.js";
|
|
@@ -104,7 +104,7 @@ import { default as gt } from "./components/SidePanel.vue.js";
|
|
|
104
104
|
import { default as Ct } from "./components/DatePicker.vue.js";
|
|
105
105
|
import { default as It } from "./components/IconPicker.vue.js";
|
|
106
106
|
import { default as Ft } from "./components/ButtonGroup.vue.js";
|
|
107
|
-
import { default as
|
|
107
|
+
import { default as vt } from "./components/NumberInput.vue.js";
|
|
108
108
|
import { default as At } from "./components/ThemeToggle.vue.js";
|
|
109
109
|
import { default as kt } from "./components/GoogleLogin.vue.js";
|
|
110
110
|
import { default as yt } from "./components/ColorPicker/ColorPicker.vue.js";
|
|
@@ -119,12 +119,13 @@ import { STATUS_MAP as qt, normalizeStatus as Wt, resolveStatus as Xt } from "./
|
|
|
119
119
|
import { default as Jt } from "./components/Price/Price.vue.js";
|
|
120
120
|
import { default as ea } from "./components/DateTime/DateTime.vue.js";
|
|
121
121
|
import { default as ra } from "./components/Clock/Clock.vue.js";
|
|
122
|
-
import {
|
|
122
|
+
import { default as aa } from "./components/Chat/ChatInterface.vue.js";
|
|
123
|
+
import { VLITE_CONFIG_KEY as ma, configState as la, updateConfig as sa, useVLiteConfig as pa } from "./core/config.js";
|
|
123
124
|
export {
|
|
124
125
|
E as $t,
|
|
125
126
|
Fo as Accordion,
|
|
126
127
|
ko as AccordionContent,
|
|
127
|
-
|
|
128
|
+
vo as AccordionItem,
|
|
128
129
|
Ao as AccordionTrigger,
|
|
129
130
|
Qr as Alert,
|
|
130
131
|
Gr as AttachmentsList,
|
|
@@ -138,6 +139,7 @@ export {
|
|
|
138
139
|
at as Button,
|
|
139
140
|
Ft as ButtonGroup,
|
|
140
141
|
Ee as Carousel,
|
|
142
|
+
aa as ChatInterface,
|
|
141
143
|
nt as CheckBox,
|
|
142
144
|
L as Chip,
|
|
143
145
|
yo as ChoiceBox,
|
|
@@ -179,7 +181,7 @@ export {
|
|
|
179
181
|
xo as List,
|
|
180
182
|
no as ListFieldRow,
|
|
181
183
|
Hr as Logo,
|
|
182
|
-
|
|
184
|
+
he as MASONRY_BREAKPOINTS,
|
|
183
185
|
De as Masonry,
|
|
184
186
|
et as Modal,
|
|
185
187
|
Zo as MultiSelect,
|
|
@@ -188,7 +190,7 @@ export {
|
|
|
188
190
|
pe as NavbarGroup,
|
|
189
191
|
le as NavbarItem,
|
|
190
192
|
ue as NavbarTabs,
|
|
191
|
-
|
|
193
|
+
vt as NumberInput,
|
|
192
194
|
to as OTPInput,
|
|
193
195
|
jo as Pagination,
|
|
194
196
|
cr as PermissionEditor,
|
|
@@ -208,7 +210,7 @@ export {
|
|
|
208
210
|
lr as SidebarMenu,
|
|
209
211
|
pr as SidebarMenuItem,
|
|
210
212
|
st as Slider,
|
|
211
|
-
|
|
213
|
+
Ne as Spinner,
|
|
212
214
|
$ as Stats,
|
|
213
215
|
Qt as StatusChip,
|
|
214
216
|
dt as Switch,
|
|
@@ -220,12 +222,12 @@ export {
|
|
|
220
222
|
Mr as TimelineItem,
|
|
221
223
|
Rt as ToastNotification,
|
|
222
224
|
xt as Tooltip,
|
|
223
|
-
|
|
225
|
+
ma as VLITE_CONFIG_KEY,
|
|
224
226
|
fo as Workbook,
|
|
225
227
|
we as barcodesConstants,
|
|
226
228
|
p as camelCase,
|
|
227
229
|
d as capitalize,
|
|
228
|
-
|
|
230
|
+
la as configState,
|
|
229
231
|
Fr as configure,
|
|
230
232
|
u as copyToClipboard,
|
|
231
233
|
Ht as createVLite,
|
|
@@ -246,22 +248,22 @@ export {
|
|
|
246
248
|
Uo as initializeTheme,
|
|
247
249
|
b as isAppleDevice,
|
|
248
250
|
C as isEmpty,
|
|
249
|
-
|
|
251
|
+
N as lazySearch,
|
|
250
252
|
Wt as normalizeStatus,
|
|
251
|
-
|
|
253
|
+
hr as pauseTimers,
|
|
252
254
|
P as randomNumber,
|
|
253
255
|
I as removeExtraProperties,
|
|
254
|
-
|
|
256
|
+
vr as removeToast,
|
|
255
257
|
A as resetSearchIndex,
|
|
256
258
|
Xt as resolveStatus,
|
|
257
|
-
|
|
259
|
+
Nr as resumeTimers,
|
|
258
260
|
B as search,
|
|
259
261
|
Ar as showToast,
|
|
260
262
|
D as slugify,
|
|
261
263
|
F as throttle,
|
|
262
264
|
Br as toast,
|
|
263
|
-
|
|
264
|
-
|
|
265
|
+
h as truncate,
|
|
266
|
+
sa as updateConfig,
|
|
265
267
|
Sr as useAdvancedKeyStroke,
|
|
266
268
|
Ye as useDropdownIds,
|
|
267
269
|
Ve as useDropdownSelection,
|
|
@@ -273,6 +275,6 @@ export {
|
|
|
273
275
|
kr as useNotifications,
|
|
274
276
|
Vo as useTheme,
|
|
275
277
|
oo as useTreeSelection,
|
|
276
|
-
|
|
278
|
+
pa as useVLiteConfig,
|
|
277
279
|
Cr as vScrollReveal
|
|
278
280
|
};
|
package/package.json
CHANGED
package/style.css
CHANGED
|
@@ -973,5 +973,5 @@ textarea::-webkit-scrollbar-thumb:hover {
|
|
|
973
973
|
}
|
|
974
974
|
|
|
975
975
|
/* --- Vite Generated CSS --- */
|
|
976
|
-
input[data-v-9a771336]::-webkit-outer-spin-button,input[data-v-9a771336]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-9a771336]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.dropdown-menu[data-v-c4c5d9e4]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-7c958115]{background-color:#00000052}.v-modal-backdrop[data-v-7c958115]{transform:translateZ(0);will-change:opacity}.modal-body[data-v-7c958115]{will-change:transform;contain:layout style}.blink-bg[data-v-7c958115]{animation:blink-animation-7c958115 1s infinite}@keyframes blink-animation-7c958115{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-3e1f26ae]{will-change:transform;contain:layout style}.custom-fields-table[data-v-3e1f26ae] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-3e1f26ae] input,.custom-fields-table[data-v-3e1f26ae] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-3e1f26ae] input,.custom-fields-table[data-v-3e1f26ae] textarea,.custom-fields-table[data-v-3e1f26ae] select,.custom-fields-table[data-v-3e1f26ae] .input-wrapper,.custom-fields-table[data-v-3e1f26ae] .tooltip-trigger button{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-3e1f26ae] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-3e1f26ae] input:focus,.custom-fields-table[data-v-3e1f26ae] textarea:focus,.custom-fields-table[data-v-3e1f26ae] select:focus,.custom-fields-table[data-v-3e1f26ae] .input-wrapper:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-3e1f26ae] .w-full{width:100%;height:100%}.list-enter-active[data-v-3e1f26ae]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-3e1f26ae]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-ed0b3aa6]{display:flex;flex-direction:column}.form-field-item[data-v-ed0b3aa6]:has([role=switch]),.form-field-item[data-v-ed0b3aa6]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-06b1158f]{width:100%}[data-tabes][data-v-262d5698]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 1 0%;min-width:0}[data-tabes].inline-flex[data-v-262d5698]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes].inline-flex[data-v-262d5698]::-webkit-scrollbar{display:none}@media(max-width:480px){[data-tabes][data-v-262d5698]:not([class*=flex-wrap]){overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes][data-v-262d5698]:not([class*=flex-wrap])::-webkit-scrollbar{display:none}}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-3a733454]{will-change:transform;contain:layout style}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-1285df4f]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-1285df4f]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-ff2923de]{background-color:#0003}.sidepanel-body[data-v-ff2923de]{will-change:transform;contain:layout style}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-d1e90135]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.38em}.breadcrumb--sm[data-v-d1e90135]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-d1e90135]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-d1e90135]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-d1e90135]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-d1e90135]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-d1e90135]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-d1e90135]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-d1e90135]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-d1e90135]{gap:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-d1e90135]{display:none}.import-table[data-v-cfd99cc9]{width:100%;font-size:.875rem;text-align:left;border-collapse:collapse}.import-thead[data-v-cfd99cc9]{font-size:.75rem;color:var(--color-muted-foreground, #6b7280);text-transform:uppercase;background-color:var(--color-muted, #f3f4f6);position:sticky;top:0;z-index:10}.import-th[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500}.import-th-center[data-v-cfd99cc9]{text-align:center;width:4rem}.import-tbody .import-tr[data-v-cfd99cc9]{border-bottom:1px solid var(--color-border, #e5e7eb)}.import-tbody .import-tr[data-v-cfd99cc9]:last-child{border-bottom:none}.import-tr-active[data-v-cfd99cc9]{transition:background-color .2s ease-in-out}.import-tr-active[data-v-cfd99cc9]:hover{background-color:var(--color-muted, #f3f4f6);opacity:.85}.import-tr-ignored[data-v-cfd99cc9]{background-color:var(--color-muted, #f3f4f6);opacity:.6}.import-td-header[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500;color:var(--color-foreground, #111827);white-space:nowrap}.import-td-dropdown[data-v-cfd99cc9]{padding:.5rem 1rem;min-width:200px}.import-td-preview[data-v-cfd99cc9]{padding:.75rem 1rem;color:var(--color-muted-foreground, #6b7280);min-width:200px;max-width:300px}.import-td-action[data-v-cfd99cc9]{padding:.75rem 1rem;text-align:center;vertical-align:middle}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-e8fba320]{width:100%;position:relative;will-change:transform;contain:layout style}.file-tree-container[data-v-91337be9],.sheet-container[data-v-a5e9ca6f]{will-change:transform;contain:layout style}.accordion-enter-active[data-v-0075dffb],.accordion-leave-active[data-v-0075dffb]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-0075dffb]{contain:paint}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}.permission-matrix-wrapper[data-v-ba68e64a]{max-height:70vh;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-a42b2fb0]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background);will-change:transform;contain:layout style}.custom-list-header[data-v-a42b2fb0]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-a42b2fb0],.custom-list-header+.custom-list-header[data-v-a42b2fb0]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-a42b2fb0]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-0b1ab970]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto;max-height:65vh;position:relative;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.custom-table[data-v-0b1ab970]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-0b1ab970]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-0b1ab970]{background-color:var(--color-gray-150);color:var(--color-foreground);background-clip:padding-box;border-bottom:none;border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}thead:not(.custom-sticky-header) .custom-th[data-v-0b1ab970]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-0b1ab970]{text-align:center;min-width:100px}.custom-th[data-v-0b1ab970]:first-child{border-left:none}.custom-td[data-v-0b1ab970]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-0b1ab970]{text-align:center}.custom-td[data-v-0b1ab970]:first-child{border-left:none}.custom-group-row td[data-v-0b1ab970]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-0b1ab970]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-0b1ab970]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-0b1ab970]{border-bottom:none}.custom-active-cell[data-v-0b1ab970]{cursor:pointer}.custom-active-cell[data-v-0b1ab970]:hover{background-color:var(--color-accent)}.button-group[data-v-ba735fac] button{align-self:stretch;height:auto!important;min-height:unset!important;min-width:unset!important;width:auto!important}.button-group[data-v-ba735fac]:not(.vertical-group) button{aspect-ratio:unset}.attached-group[data-v-ba735fac] button{position:relative;--radius: .375rem}.attached-group[data-v-ba735fac] button:focus-visible,.attached-group[data-v-ba735fac] button:hover{z-index:10}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-ba735fac]:not(.vertical-group) button:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);border-top-right-radius:0;border-bottom-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-bottom-left-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-ba735fac] button:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-ba735fac] button:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-top-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-ba735fac] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.toast-item[data-v-9c775c23]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-9c775c23]{animation:first-toast-in-9c775c23 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-9c775c23]{transition:all .25s ease-in}.first-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-9c775c23{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-9c775c23],.stack-toast-leave-active[data-v-9c775c23]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-9c775c23]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-9c775c23]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.cp-item-transition[data-v-66b1ae06]{transition:background-color 80ms ease,color 80ms ease}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-1bae4c0f]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
|
|
976
|
+
input[data-v-9a771336]::-webkit-outer-spin-button,input[data-v-9a771336]::-webkit-inner-spin-button{-webkit-appearance:none;appearance:none;margin:0}input[type=number][data-v-9a771336]{-moz-appearance:textfield;appearance:textfield}@keyframes onAutoFillStart{0%{opacity:1}to{opacity:1}}@keyframes onAutoFillCancel{0%{opacity:1}to{opacity:1}}input.autofill-detect:-webkit-autofill{animation-name:onAutoFillStart;animation-duration:1ms;animation-fill-mode:both}input.autofill-detect:not(:-webkit-autofill){animation-name:onAutoFillCancel;animation-duration:1ms;animation-fill-mode:both}.dropdown-menu[data-v-c4c5d9e4]{will-change:transform;contain:layout style}.v-modal-overlay[data-v-7c958115]{background-color:#00000052}.v-modal-backdrop[data-v-7c958115]{transform:translateZ(0);will-change:opacity}.modal-body[data-v-7c958115]{will-change:transform;contain:layout style}.blink-bg[data-v-7c958115]{animation:blink-animation-7c958115 1s infinite}@keyframes blink-animation-7c958115{0%{background-color:inherit}15%{background-color:var(--color-gray-250)}35%{background-color:inherit}75%{background-color:var(--color-gray-250)}to{background-color:inherit}}.IroBox{border-radius:8px!important}.custom-fields-table[data-v-3e1f26ae]{will-change:transform;contain:layout style}.custom-fields-table[data-v-3e1f26ae] .form-field-item{margin-bottom:0!important;height:100%}.custom-fields-table[data-v-3e1f26ae] input,.custom-fields-table[data-v-3e1f26ae] textarea{padding-left:1em;padding-right:.5em}.custom-fields-table[data-v-3e1f26ae] input,.custom-fields-table[data-v-3e1f26ae] textarea,.custom-fields-table[data-v-3e1f26ae] select,.custom-fields-table[data-v-3e1f26ae] .input-wrapper,.custom-fields-table[data-v-3e1f26ae] .tooltip-trigger button{border:none!important;background:transparent!important;box-shadow:none!important;border-radius:0!important;height:100%!important;min-height:40px}.custom-fields-table[data-v-3e1f26ae] .tooltip-trigger button{justify-content:space-between!important}.custom-fields-table[data-v-3e1f26ae] input:focus,.custom-fields-table[data-v-3e1f26ae] textarea:focus,.custom-fields-table[data-v-3e1f26ae] select:focus,.custom-fields-table[data-v-3e1f26ae] .input-wrapper:focus-within{background-color:hsla(var(--primary) / .03)!important;box-shadow:inset 0 0 0 2px hsla(var(--primary) / .1)!important}.custom-fields-table[data-v-3e1f26ae] .w-full{width:100%;height:100%}.list-enter-active[data-v-3e1f26ae]{transition:all .15s cubic-bezier(.16,1,.3,1)}.list-enter-from[data-v-3e1f26ae]{opacity:0;transform:translateY(-5px)}.form-field-item[data-v-ed0b3aa6]{display:flex;flex-direction:column}.form-field-item[data-v-ed0b3aa6]:has([role=switch]),.form-field-item[data-v-ed0b3aa6]:has([role=checkbox]){flex-direction:row;align-items:center;justify-content:flex-start}.form-container[data-v-06b1158f]{width:100%}[data-tabes][data-v-262d5698]:not(.inline-flex):not([class*=gap-6])>:where(button,a,[role=tab]){flex:1 1 0%;min-width:0}[data-tabes].inline-flex[data-v-262d5698]{overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes].inline-flex[data-v-262d5698]::-webkit-scrollbar{display:none}@media(max-width:480px){[data-tabes][data-v-262d5698]:not([class*=flex-wrap]){overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}[data-tabes][data-v-262d5698]:not([class*=flex-wrap])::-webkit-scrollbar{display:none}}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar{width:0px}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar[data-v-3a733454]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-3a733454]{will-change:transform;contain:layout style}.custom-scrollbar-x[data-v-50c60912]::-webkit-scrollbar{height:8px}.custom-scrollbar-x[data-v-50c60912]::-webkit-scrollbar-track{background:transparent}.custom-scrollbar-x[data-v-50c60912]::-webkit-scrollbar-thumb{background-color:var(--color-border);border-radius:10px}.scrollable-container[data-v-50c60912]{will-change:transform;contain:layout style}.v-sidepanel-overlay[data-v-ff2923de]{background-color:#0003}.sidepanel-body[data-v-ff2923de]{will-change:transform;contain:layout style}.navbar-tabs-no-scrollbar{scrollbar-width:none;-ms-overflow-style:none}.navbar-tabs-no-scrollbar::-webkit-scrollbar{display:none}.fade-x-enter-active,.fade-x-leave-active{transition:opacity .15s ease}.fade-x-enter-from,.fade-x-leave-to{opacity:0}.breadcrumb-item[data-v-ecb5df7c]{display:inline-flex;align-items:center;cursor:pointer}.breadcrumb-link[data-v-ecb5df7c]{display:inline-flex;align-items:center;gap:.35em;color:var(--color-muted-foreground);text-decoration:none;transition:color .15s ease,background-color .15s ease;border-radius:var(--radius-sm)}.breadcrumb-link[data-v-ecb5df7c]:not(.current):not(.disabled):hover{color:var(--color-foreground)}.breadcrumb-link.current[data-v-ecb5df7c]{color:var(--color-foreground);font-weight:600;cursor:default}.breadcrumb-link.disabled[data-v-ecb5df7c]{opacity:.45;cursor:not-allowed;pointer-events:none}.breadcrumb-icon[data-v-ecb5df7c]{flex-shrink:0}.breadcrumb-list[data-v-d1e90135]{display:flex;flex-wrap:wrap;align-items:center;list-style:none;margin:0;padding:0;gap:.38em}.breadcrumb--sm[data-v-d1e90135]{font-size:var(--text--fs-2)}.breadcrumb--md[data-v-d1e90135]{font-size:var(--text-fs-0.5, 1em)}.breadcrumb--lg[data-v-d1e90135]{font-size:var(--text-fs-2)}.breadcrumb-separator[data-v-d1e90135]{display:inline-flex;align-items:center;color:var(--color-gray-500);-webkit-user-select:none;user-select:none;font-size:.9em;line-height:1;padding:0 .1em}.breadcrumb-ellipsis[data-v-d1e90135]{display:inline-flex;align-items:center}.breadcrumb-ellipsis-btn[data-v-d1e90135]{display:inline-flex;align-items:center;justify-content:center;width:1.6em;height:1.6em;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:transparent;color:var(--color-muted-foreground);cursor:pointer;font-size:.9em;line-height:1;letter-spacing:.05em;transition:all .15s ease}.breadcrumb-ellipsis-btn[data-v-d1e90135]:hover{background:var(--color-accent);color:var(--color-foreground);border-color:var(--color-gray-350)}.breadcrumb--contained[data-v-d1e90135]{background:var(--color-secondary);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:.45em 1em}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link{padding:.2em .7em;border-radius:9999px;background:var(--color-secondary);border:1px solid var(--color-border)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent);border-color:var(--color-gray-350)}.breadcrumb--pills[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground);border-color:var(--color-primary)}.breadcrumb--arrow .breadcrumb-list[data-v-d1e90135]{gap:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link{padding:.35em .9em .35em 1.4em;background:var(--color-secondary);clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%,.6em 50%);border:none;margin-left:-.3em}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-item:first-child .breadcrumb-link{padding-left:.9em;clip-path:polygon(0 0,calc(100% - .6em) 0,100% 50%,calc(100% - .6em) 100%,0 100%);border-radius:var(--radius-sm) 0 0 var(--radius-sm);margin-left:0}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link:not(.current):not(.disabled):hover{background:var(--color-accent)}.breadcrumb--arrow[data-v-d1e90135] .breadcrumb-link.current{background:var(--color-primary);color:var(--color-primary-foreground)}.breadcrumb--arrow .breadcrumb-separator[data-v-d1e90135]{display:none}.import-table[data-v-cfd99cc9]{width:100%;font-size:.875rem;text-align:left;border-collapse:collapse}.import-thead[data-v-cfd99cc9]{font-size:.75rem;color:var(--color-muted-foreground, #6b7280);text-transform:uppercase;background-color:var(--color-muted, #f3f4f6);position:sticky;top:0;z-index:10}.import-th[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500}.import-th-center[data-v-cfd99cc9]{text-align:center;width:4rem}.import-tbody .import-tr[data-v-cfd99cc9]{border-bottom:1px solid var(--color-border, #e5e7eb)}.import-tbody .import-tr[data-v-cfd99cc9]:last-child{border-bottom:none}.import-tr-active[data-v-cfd99cc9]{transition:background-color .2s ease-in-out}.import-tr-active[data-v-cfd99cc9]:hover{background-color:var(--color-muted, #f3f4f6);opacity:.85}.import-tr-ignored[data-v-cfd99cc9]{background-color:var(--color-muted, #f3f4f6);opacity:.6}.import-td-header[data-v-cfd99cc9]{padding:.75rem 1rem;font-weight:500;color:var(--color-foreground, #111827);white-space:nowrap}.import-td-dropdown[data-v-cfd99cc9]{padding:.5rem 1rem;min-width:200px}.import-td-preview[data-v-cfd99cc9]{padding:.75rem 1rem;color:var(--color-muted-foreground, #6b7280);min-width:200px;max-width:300px}.import-td-action[data-v-cfd99cc9]{padding:.75rem 1rem;text-align:center;vertical-align:middle}.heatmap-container[data-v-00476f00]{width:100%;height:100%;display:flex;flex-direction:column;min-height:0}.heatmap-wrapper[data-v-00476f00]{width:100%;height:100%;overflow:auto;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:16px;box-sizing:border-box;position:relative}.heatmap-grid[data-v-00476f00]{width:fit-content;height:fit-content;transition:all .2s ease-in-out}.heatmap-cell[data-v-00476f00]{aspect-ratio:1 / 1;border-radius:2px;transition:all .15s ease-in-out;border:1px solid transparent;box-sizing:border-box}.heatmap-cell-interactive[data-v-00476f00]{cursor:pointer}.heatmap-cell-interactive[data-v-00476f00]:hover{transform:scale(1.1);border-color:var(--border);box-shadow:0 4px 6px -1px #0000001a,0 2px 4px -2px #0000001a;z-index:10;position:relative}.heatmap-cell-empty[data-v-00476f00]{opacity:.6}.heatmap-cell-hovered[data-v-00476f00]{outline:2px solid var(--primary);outline-offset:1px}.heatmap-cell-label[data-v-00476f00]{font-size:8px;font-weight:500;color:var(--foreground);opacity:.8;display:flex;align-items:center;justify-content:center;height:100%;width:100%;pointer-events:none}.heatmap-legend[data-v-00476f00]{display:flex;align-items:center;gap:.5rem;margin-top:1rem;font-size:.75rem;color:var(--muted-foreground);flex-shrink:0}.heatmap-legend-label[data-v-00476f00]{font-weight:500}.heatmap-legend-colors[data-v-00476f00]{display:flex;gap:.125rem}.heatmap-legend-item[data-v-00476f00]{width:.75rem;height:.75rem;border-radius:.375rem;border:1px solid var(--border)}@media(max-width:640px){.heatmap-wrapper[data-v-00476f00]{padding:12px}.heatmap-cell[data-v-00476f00]{border-radius:2px}.heatmap-cell-label[data-v-00476f00]{font-size:7px}}@media(min-width:641px)and (max-width:1023px){.heatmap-wrapper[data-v-00476f00]{padding:14px}.heatmap-cell[data-v-00476f00]{border-radius:2px}}@media(min-width:1024px){.heatmap-wrapper[data-v-00476f00]{padding:16px}.heatmap-cell[data-v-00476f00]{border-radius:3px}}.masonry-item[data-v-c29d0159]{content-visibility:auto;contain-intrinsic-size:1px 200px}.carousel-wrapper[data-v-e8fba320]{width:100%;position:relative;will-change:transform;contain:layout style}.file-tree-container[data-v-91337be9],.sheet-container[data-v-a5e9ca6f]{will-change:transform;contain:layout style}.accordion-enter-active[data-v-0075dffb],.accordion-leave-active[data-v-0075dffb]{transition:height .3s ease-in-out;will-change:height}.content-wrapper[data-v-0075dffb]{contain:paint}.sidebar-manu-item .tooltip-trigger{width:100%!important}.sidebar-menu-tooltip{margin-left:4px!important}[dir=rtl] .sidebar-menu-tooltip{margin-right:4px!important}.bg-stripe[data-v-454a1505]{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.animate-progress-stripe[data-v-454a1505]{animation:progress-stripe-454a1505 1s linear infinite}@keyframes progress-stripe-454a1505{0%{background-position:1rem 0}to{background-position:0 0}}.animate-progress-indeterminate[data-v-454a1505]{animation:progress-indeterminate-454a1505 1.5s infinite cubic-bezier(.65,.815,.735,.395)}@keyframes progress-indeterminate-454a1505{0%{transform:translate(-100%) scaleX(.2)}50%{transform:translate(0) scaleX(.5)}to{transform:translate(100%) scaleX(.2)}}.permission-matrix-wrapper[data-v-ba68e64a]{max-height:70vh;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-ba68e64a]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.permission-list-wrapper[data-v-a42b2fb0]{border:1px solid var(--color-border);border-radius:.5rem;overflow:hidden;background-color:var(--color-background);will-change:transform;contain:layout style}.custom-list-header[data-v-a42b2fb0]{background-color:var(--color-muted);border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]{border-bottom:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);background-color:var(--color-background)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:hover{background-color:var(--color-accent)}.custom-list-group-content .custom-list-item[data-v-a42b2fb0]:last-child{border-bottom:none}.custom-list-group-content+.custom-list-header[data-v-a42b2fb0],.custom-list-header+.custom-list-header[data-v-a42b2fb0]{border-top:1px solid var(--color-border)}.permission-list-wrapper>.custom-list-header[data-v-a42b2fb0]:last-child{border-bottom:none}.permission-matrix-wrapper[data-v-0b1ab970]{border:1px solid var(--color-border);background-color:var(--color-gray-100);border-radius:.5rem;overflow:auto;max-height:65vh;position:relative;will-change:transform;contain:layout style}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar{width:6px;height:6px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-track{background:transparent}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb{background:var(--color-gray-350);border-radius:3px}.permission-matrix-wrapper[data-v-0b1ab970]::-webkit-scrollbar-thumb:hover{background:var(--color-gray-400)}.custom-table[data-v-0b1ab970]{width:100%;border-collapse:collapse}.custom-sticky-header th[data-v-0b1ab970]{position:sticky;top:0;z-index:20;box-shadow:0 1px 0 var(--color-border)}.custom-th[data-v-0b1ab970]{background-color:var(--color-gray-150);color:var(--color-foreground);background-clip:padding-box;border-bottom:none;border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px);text-align:left;font-weight:600;min-width:200px}thead:not(.custom-sticky-header) .custom-th[data-v-0b1ab970]{border-bottom:1px solid var(--color-border)}.custom-th.text-center[data-v-0b1ab970]{text-align:center;min-width:100px}.custom-th[data-v-0b1ab970]:first-child{border-left:none}.custom-td[data-v-0b1ab970]{border-bottom:1px solid var(--color-border);border-left:1px solid var(--color-border);padding:var(--cell-py) var(--cell-px)}.custom-td.text-center[data-v-0b1ab970]{text-align:center}.custom-td[data-v-0b1ab970]:first-child{border-left:none}.custom-group-row td[data-v-0b1ab970]{background-color:var(--color-gray-100);border-top:1px solid var(--color-border);border-bottom:1px solid var(--color-border)}.custom-entity-row[data-v-0b1ab970]{background-color:var(--color-background);transition:background-color .1s ease}.custom-entity-row[data-v-0b1ab970]:hover{background-color:var(--color-gray-50)}.custom-entity-row:last-child td[data-v-0b1ab970]{border-bottom:none}.custom-active-cell[data-v-0b1ab970]{cursor:pointer}.custom-active-cell[data-v-0b1ab970]:hover{background-color:var(--color-accent)}.button-group[data-v-ba735fac] button{align-self:stretch;height:auto!important;min-height:unset!important;min-width:unset!important;width:auto!important}.button-group[data-v-ba735fac]:not(.vertical-group) button{aspect-ratio:unset}.attached-group[data-v-ba735fac] button{position:relative;--radius: .375rem}.attached-group[data-v-ba735fac] button:focus-visible,.attached-group[data-v-ba735fac] button:hover{z-index:10}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child){margin-left:-1px}.attached-group[data-v-ba735fac]:not(.vertical-group) button:first-child{border-top-left-radius:var(--radius);border-bottom-left-radius:var(--radius);border-top-right-radius:0;border-bottom-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(:last-child){border-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:last-child{border-top-right-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-bottom-left-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child){margin-top:-1px}.vertical-group[data-v-ba735fac] button:first-child{border-top-left-radius:var(--radius);border-top-right-radius:var(--radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.vertical-group[data-v-ba735fac] button:not(:first-child):not(:last-child){border-radius:0}.vertical-group[data-v-ba735fac] button:last-child{border-bottom-left-radius:var(--radius);border-bottom-right-radius:var(--radius);border-top-left-radius:0;border-top-right-radius:0}.attached-group[data-v-ba735fac]:not(.vertical-group) button:not(:first-child):not(.border):before{content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none;height:100%}.vertical-group[data-v-ba735fac] button:not(:first-child):not(.border):before{content:"";position:absolute;top:0;left:0;right:0;height:1px;width:100%;background-color:currentColor;opacity:.15;z-index:5;pointer-events:none}.toast-item[data-v-9c775c23]{will-change:transform,opacity;contain:layout style}.first-toast-enter-active[data-v-9c775c23]{animation:first-toast-in-9c775c23 .45s cubic-bezier(.23,1,.32,1) forwards}.first-toast-leave-active[data-v-9c775c23]{transition:all .25s ease-in}.first-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.98)}@keyframes first-toast-in-9c775c23{0%{opacity:var(--entrance-opacity, .6);transform:translateY(var(--entrance-offset, 25px)) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.stack-toast-enter-active[data-v-9c775c23],.stack-toast-leave-active[data-v-9c775c23]{transition:all .3s cubic-bezier(.16,1,.3,1)}.stack-toast-enter-from[data-v-9c775c23]{opacity:0;transform:scale(.95) translateY(10px)}.stack-toast-leave-to[data-v-9c775c23]{opacity:0;transform:scale(.95)}.stack-toast-move[data-v-9c775c23]{transition:transform .4s cubic-bezier(.16,1,.3,1)}.cp-item-transition[data-v-66b1ae06]{transition:background-color 80ms ease,color 80ms ease}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar{width:4px}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-track{background:transparent}.command-palette-content[data-v-1bae4c0f] ::-webkit-scrollbar-thumb{background:var(--border);border-radius:9999px}.cp-scroll-container[data-v-1bae4c0f]{transform:translateZ(0);will-change:transform;touch-action:pan-y;backface-visibility:hidden}
|
|
977
977
|
|