vlite3 1.0.4 → 1.0.6
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/AttachmentsList/AttachmentsList.vue.d.ts +19 -3
- package/components/AttachmentsList/AttachmentsList.vue.js +274 -111
- package/components/AttachmentsList/fileTypeIcon.d.ts +16 -0
- package/components/AttachmentsList/fileTypeIcon.js +127 -0
- package/components/AttachmentsList/index.d.ts +1 -0
- package/components/AttachmentsList/types.d.ts +74 -2
- package/components/Avatar.vue.js +2 -2
- package/components/Badge.vue.js +7 -7
- package/components/Button.vue.js +36 -43
- package/components/ButtonGroup.vue.js +2 -2
- package/components/ButtonGroup.vue2.js +8 -8
- package/components/CategoryManager/CategoryManager.vue.d.ts +36 -0
- package/components/CategoryManager/CategoryNode.vue.d.ts +15 -0
- package/components/CategoryManager/index.d.ts +2 -0
- package/components/CategoryManager/types.d.ts +43 -0
- package/components/Chat/ChatBubble.vue.js +70 -56
- package/components/Chat/ChatInterface.vue.js +182 -142
- package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
- package/components/CommandPalette/{CommandPaletteItem.vue2.js → CommandPaletteItem.vue.js} +1 -1
- package/components/Dropdown/DropdownMenu.vue.js +2 -2
- package/components/Dropdown/DropdownMenu.vue2.js +1 -0
- package/components/FilePicker/FilePicker.vue.js +117 -122
- package/components/Input.vue.js +28 -26
- package/components/Kanban/Kanban.vue.d.ts +7 -16
- package/components/Kanban/Kanban.vue.js +1 -1
- package/components/Kanban/Kanban.vue2.js +79 -47
- package/components/Kanban/KanbanBoard.vue.js +2 -2
- package/components/Kanban/KanbanBoard.vue2.js +21 -21
- package/components/Kanban/types.d.ts +3 -0
- package/components/List/List.vue.js +89 -85
- package/components/Navbar/Navbar.vue.d.ts +4 -0
- package/components/Navbar/Navbar.vue.js +196 -173
- package/components/Navbar/NavbarTabs.vue.js +72 -66
- package/components/NavbarCommandPalette.vue.js +11 -11
- package/components/NumberInput.vue.js +2 -2
- package/components/NumberInput.vue2.js +144 -104
- package/components/Screen/Screen.vue.d.ts +12 -29
- package/components/Screen/Screen.vue.js +228 -195
- package/components/Screen/components/ScreenViewToggle.vue.d.ts +6 -3
- package/components/Screen/components/ScreenViewToggle.vue.js +29 -34
- package/components/Screen/types.d.ts +59 -7
- package/components/Stats/Stats.vue.d.ts +1 -0
- package/components/Stats/Stats.vue.js +184 -156
- package/components/Stats/types.d.ts +1 -0
- package/components/Workbook/Sheet.vue.d.ts +1 -1
- package/directives/vRipple.js +28 -9
- package/index.js +87 -85
- package/package.json +1 -1
- package/style.css +1 -1
|
@@ -1,22 +1,26 @@
|
|
|
1
|
-
import { defineComponent as
|
|
2
|
-
import
|
|
1
|
+
import { defineComponent as J, ref as p, onMounted as Q, onUnmounted as W, watch as X, nextTick as B, computed as L, openBlock as d, createElementBlock as u, createElementVNode as a, createTextVNode as Z, createCommentVNode as S, Fragment as _, renderList as H, toDisplayString as U, createBlock as ee, createVNode as y, unref as w, withCtx as te, withDirectives as le, vModelText as ae } from "vue";
|
|
2
|
+
import oe from "./ChatBubble.vue.js";
|
|
3
3
|
import N from "../Button.vue.js";
|
|
4
4
|
import V from "../Icon.vue.js";
|
|
5
|
-
import
|
|
6
|
-
import { useFileUpload as
|
|
7
|
-
const
|
|
5
|
+
import se from "../FilePicker/FilePicker.vue.js";
|
|
6
|
+
import { useFileUpload as re } from "../Form/composables/useFileUpload.js";
|
|
7
|
+
const ne = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent" }, ie = {
|
|
8
8
|
key: 0,
|
|
9
9
|
class: "py-2 mb-2 text-center text-xs text-muted-foreground flex justify-center items-center gap-2"
|
|
10
|
-
},
|
|
10
|
+
}, de = {
|
|
11
11
|
key: 1,
|
|
12
12
|
class: "flex items-center justify-center h-full text-muted-foreground text-sm"
|
|
13
|
-
},
|
|
13
|
+
}, ue = { class: "flex flex-col gap-2 pb-2" }, ce = {
|
|
14
|
+
key: 0,
|
|
15
|
+
class: "flex items-center gap-3 py-1 select-none",
|
|
16
|
+
role: "separator"
|
|
17
|
+
}, fe = { class: "shrink-0 px-3 py-0.5 rounded-full text-[11px] font-medium text-muted-foreground bg-muted/60 border border-border/40 tracking-wide" }, me = { class: "p-3 shrink-0 bg-transparent flex flex-col gap-1" }, ve = {
|
|
14
18
|
key: 0,
|
|
15
19
|
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
|
-
},
|
|
20
|
+
}, he = { class: "flex items-center gap-2" }, pe = { class: "truncate max-w-[200px] sm:max-w-[300px] md:max-w-[400px]" }, ge = { class: "relative flex flex-col bg-card border border-border rounded-xl shadow-sm focus-within:border-primary transition-colors overflow-hidden" }, xe = {
|
|
17
21
|
key: 0,
|
|
18
22
|
class: "flex flex-wrap gap-2 p-3 bg-muted/10 border-b border-border"
|
|
19
|
-
},
|
|
23
|
+
}, ye = ["title"], we = ["onClick", "disabled"], be = { class: "flex items-end gap-2 p-1" }, ke = { class: "shrink-0 mb-1 ml-1" }, De = ["placeholder", "disabled"], Se = { class: "shrink-0 mb-1 mr-1" }, Ee = /* @__PURE__ */ J({
|
|
20
24
|
__name: "ChatInterface",
|
|
21
25
|
props: {
|
|
22
26
|
data: {},
|
|
@@ -33,101 +37,129 @@ const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent"
|
|
|
33
37
|
maxFileSize: {}
|
|
34
38
|
},
|
|
35
39
|
emits: ["add", "delete", "edit", "refetch"],
|
|
36
|
-
setup(
|
|
37
|
-
const
|
|
38
|
-
let
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
setup(r, { emit: K }) {
|
|
41
|
+
const x = r, T = K, f = p(null), C = p(null), n = p(null), m = p(""), E = p(0), b = p(!1), i = p(null), o = p([]), { handleUploadFiles: R, loading: v } = re();
|
|
42
|
+
let k = null;
|
|
43
|
+
Q(() => {
|
|
44
|
+
C.value && f.value && (k = new IntersectionObserver(
|
|
41
45
|
([e]) => {
|
|
42
|
-
e.isIntersecting &&
|
|
46
|
+
e.isIntersecting && x.data.length > 0 && !x.isLoadingMore && (E.value = f.value.scrollHeight, b.value = !0, T("refetch"));
|
|
43
47
|
},
|
|
44
48
|
{
|
|
45
|
-
root:
|
|
49
|
+
root: f.value,
|
|
46
50
|
threshold: 0
|
|
47
51
|
}
|
|
48
|
-
),
|
|
49
|
-
}),
|
|
50
|
-
|
|
51
|
-
}),
|
|
52
|
-
() =>
|
|
52
|
+
), k.observe(C.value)), A();
|
|
53
|
+
}), W(() => {
|
|
54
|
+
k && k.disconnect();
|
|
55
|
+
}), X(
|
|
56
|
+
() => x.data.length,
|
|
53
57
|
async (e, t) => {
|
|
54
|
-
const
|
|
55
|
-
if (
|
|
56
|
-
if (await
|
|
57
|
-
const
|
|
58
|
-
|
|
59
|
-
} else !
|
|
58
|
+
const l = f.value;
|
|
59
|
+
if (l)
|
|
60
|
+
if (await B(), b.value && e > (t || 0)) {
|
|
61
|
+
const c = l.scrollHeight - E.value;
|
|
62
|
+
c > 0 && (l.scrollTop = l.scrollTop + c), b.value = !1;
|
|
63
|
+
} else !b.value && e > (t || 0) && A();
|
|
60
64
|
}
|
|
61
65
|
);
|
|
62
66
|
const A = async () => {
|
|
63
|
-
await
|
|
64
|
-
top:
|
|
67
|
+
await B(), f.value && f.value.scrollTo({
|
|
68
|
+
top: f.value.scrollHeight,
|
|
65
69
|
behavior: "smooth"
|
|
66
70
|
});
|
|
67
|
-
},
|
|
68
|
-
if (!
|
|
69
|
-
|
|
70
|
-
const e =
|
|
71
|
-
|
|
72
|
-
},
|
|
73
|
-
e.key === "Enter" && !e.shiftKey ? (e.preventDefault(),
|
|
74
|
-
},
|
|
75
|
-
i.value = e,
|
|
76
|
-
|
|
71
|
+
}, I = () => {
|
|
72
|
+
if (!n.value) return;
|
|
73
|
+
n.value.style.height = "auto";
|
|
74
|
+
const e = n.value.scrollHeight;
|
|
75
|
+
n.value.style.height = `${Math.min(e, 120)}px`;
|
|
76
|
+
}, j = (e) => {
|
|
77
|
+
e.key === "Enter" && !e.shiftKey ? (e.preventDefault(), v.value || M()) : e.key === "Escape" && i.value && (e.preventDefault(), z());
|
|
78
|
+
}, Y = (e) => {
|
|
79
|
+
i.value = e, m.value = e.text, n.value && (n.value.focus(), B(() => {
|
|
80
|
+
I();
|
|
77
81
|
}));
|
|
78
82
|
}, z = () => {
|
|
79
|
-
i.value = null,
|
|
80
|
-
},
|
|
81
|
-
const e = !!
|
|
82
|
-
return (e || t) && !
|
|
83
|
-
}),
|
|
84
|
-
|
|
85
|
-
},
|
|
86
|
-
if (!
|
|
87
|
-
const e =
|
|
88
|
-
if (
|
|
89
|
-
e !== i.value.text &&
|
|
83
|
+
i.value = null, m.value = "", n.value && (n.value.style.height = "auto", n.value.focus());
|
|
84
|
+
}, F = L(() => {
|
|
85
|
+
const e = !!m.value.trim(), t = Array.isArray(o.value) && o.value.length > 0;
|
|
86
|
+
return (e || t) && !v.value;
|
|
87
|
+
}), P = (e) => {
|
|
88
|
+
v.value || Array.isArray(o.value) && (o.value.splice(e, 1), o.value.length === 0 && (o.value = []));
|
|
89
|
+
}, M = async () => {
|
|
90
|
+
if (!F.value) return;
|
|
91
|
+
const e = m.value.trim(), t = Array.isArray(o.value) && o.value.length > 0, l = !!i.value;
|
|
92
|
+
if (l && i.value)
|
|
93
|
+
e !== i.value.text && T("edit", { ...i.value, text: e, isEdited: !0 }), i.value = null, m.value = "";
|
|
90
94
|
else {
|
|
91
|
-
let
|
|
95
|
+
let s = [];
|
|
92
96
|
if (t) {
|
|
93
|
-
const
|
|
94
|
-
if (
|
|
95
|
-
const
|
|
96
|
-
|
|
97
|
-
fileUrl:
|
|
98
|
-
fileName:
|
|
99
|
-
fileType:
|
|
100
|
-
fileSize:
|
|
101
|
-
})).filter((
|
|
97
|
+
const c = o.value.map((g) => g.file).filter(Boolean);
|
|
98
|
+
if (c.length > 0) {
|
|
99
|
+
const g = await R(c, x.folderId);
|
|
100
|
+
s = o.value.map((h, G) => ({
|
|
101
|
+
fileUrl: g[G] || "",
|
|
102
|
+
fileName: h.fileName,
|
|
103
|
+
fileType: h.fileType,
|
|
104
|
+
fileSize: h.fileSize
|
|
105
|
+
})).filter((h) => h.fileUrl !== null && h.fileUrl !== "");
|
|
102
106
|
}
|
|
103
107
|
}
|
|
104
|
-
|
|
108
|
+
T("add", e, s.length > 0 ? s : void 0), o.value = [], m.value = "";
|
|
109
|
+
}
|
|
110
|
+
n.value && (n.value.style.height = "auto", n.value.focus()), l || A();
|
|
111
|
+
}, D = (e) => {
|
|
112
|
+
if (!e) return "";
|
|
113
|
+
const t = new Date(e);
|
|
114
|
+
return `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}-${String(t.getDate()).padStart(2, "0")}`;
|
|
115
|
+
}, O = (e) => {
|
|
116
|
+
const t = new Date(e), l = /* @__PURE__ */ new Date(), s = D(l), c = D(t);
|
|
117
|
+
if (c === s) return "Today";
|
|
118
|
+
const g = new Date(l);
|
|
119
|
+
if (g.setDate(l.getDate() - 1), c === D(g)) return "Yesterday";
|
|
120
|
+
const h = t.getFullYear() === l.getFullYear();
|
|
121
|
+
return t.toLocaleDateString(void 0, {
|
|
122
|
+
weekday: "short",
|
|
123
|
+
day: "numeric",
|
|
124
|
+
month: "short",
|
|
125
|
+
...h ? {} : { year: "numeric" }
|
|
126
|
+
});
|
|
127
|
+
}, q = L(() => {
|
|
128
|
+
const e = [];
|
|
129
|
+
let t = "";
|
|
130
|
+
for (const l of x.data) {
|
|
131
|
+
const s = D(l.timestamp);
|
|
132
|
+
s && s !== t && (e.push({
|
|
133
|
+
_type: "separator",
|
|
134
|
+
_key: `sep-${s}`,
|
|
135
|
+
label: O(l.timestamp)
|
|
136
|
+
}), t = s), e.push(l);
|
|
105
137
|
}
|
|
106
|
-
|
|
107
|
-
};
|
|
108
|
-
return (e, t) => (d(),
|
|
109
|
-
|
|
138
|
+
return e;
|
|
139
|
+
}), $ = (e) => e._type === "separator";
|
|
140
|
+
return (e, t) => (d(), u("div", ne, [
|
|
141
|
+
a("div", {
|
|
110
142
|
ref_key: "messageListRef",
|
|
111
|
-
ref:
|
|
143
|
+
ref: f,
|
|
112
144
|
class: "flex-1 overflow-y-auto px-4 py-4 scrollbar-thin scrollbar-stable",
|
|
113
145
|
role: "log",
|
|
114
146
|
"aria-live": "polite",
|
|
115
147
|
"aria-label": "Chat messages",
|
|
116
148
|
style: { "will-change": "transform", contain: "layout style" }
|
|
117
149
|
}, [
|
|
118
|
-
|
|
150
|
+
a("div", {
|
|
119
151
|
ref_key: "observerTargetRef",
|
|
120
|
-
ref:
|
|
152
|
+
ref: C,
|
|
121
153
|
class: "h-1 w-full shrink-0"
|
|
122
154
|
}, null, 512),
|
|
123
|
-
|
|
124
|
-
|
|
155
|
+
r.isLoadingMore ? (d(), u("div", ie, [...t[3] || (t[3] = [
|
|
156
|
+
a("svg", {
|
|
125
157
|
class: "animate-spin h-4 w-4 text-primary",
|
|
126
158
|
xmlns: "http://www.w3.org/2000/svg",
|
|
127
159
|
fill: "none",
|
|
128
160
|
viewBox: "0 0 24 24"
|
|
129
161
|
}, [
|
|
130
|
-
|
|
162
|
+
a("circle", {
|
|
131
163
|
class: "opacity-25",
|
|
132
164
|
cx: "12",
|
|
133
165
|
cy: "12",
|
|
@@ -135,35 +167,43 @@ const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent"
|
|
|
135
167
|
stroke: "currentColor",
|
|
136
168
|
"stroke-width": "4"
|
|
137
169
|
}),
|
|
138
|
-
|
|
170
|
+
a("path", {
|
|
139
171
|
class: "opacity-75",
|
|
140
172
|
fill: "currentColor",
|
|
141
173
|
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
174
|
})
|
|
143
175
|
], -1),
|
|
144
|
-
|
|
145
|
-
])])) :
|
|
146
|
-
!
|
|
147
|
-
|
|
148
|
-
(d(!0),
|
|
149
|
-
key:
|
|
150
|
-
|
|
151
|
-
"
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
176
|
+
Z(" Loading older messages... ", -1)
|
|
177
|
+
])])) : S("", !0),
|
|
178
|
+
!r.data.length && !r.isLoadingMore ? (d(), u("div", de, " No messages yet ")) : S("", !0),
|
|
179
|
+
a("div", ue, [
|
|
180
|
+
(d(!0), u(_, null, H(q.value, (l) => (d(), u(_, {
|
|
181
|
+
key: $(l) ? l._key : l.id
|
|
182
|
+
}, [
|
|
183
|
+
$(l) ? (d(), u("div", ce, [
|
|
184
|
+
t[4] || (t[4] = a("div", { class: "flex-1 h-px bg-border/60" }, null, -1)),
|
|
185
|
+
a("span", fe, U(l.label), 1),
|
|
186
|
+
t[5] || (t[5] = a("div", { class: "flex-1 h-px bg-border/60" }, null, -1))
|
|
187
|
+
])) : (d(), ee(oe, {
|
|
188
|
+
key: 1,
|
|
189
|
+
message: l,
|
|
190
|
+
"is-sender": l.senderId === r.currentUserId,
|
|
191
|
+
"show-avatar": r.showAvatar,
|
|
192
|
+
"show-user-info": r.showUserInfo,
|
|
193
|
+
"show-timestamp": r.showTimestamp,
|
|
194
|
+
"allow-delete-all": r.allowDeleteAll,
|
|
195
|
+
"allow-edit-all": r.allowEditAll,
|
|
196
|
+
"confirm-delete": r.confirmDelete,
|
|
197
|
+
onDelete: t[0] || (t[0] = (s) => e.$emit("delete", s)),
|
|
198
|
+
onEdit: Y
|
|
199
|
+
}, null, 8, ["message", "is-sender", "show-avatar", "show-user-info", "show-timestamp", "allow-delete-all", "allow-edit-all", "confirm-delete"]))
|
|
200
|
+
], 64))), 128))
|
|
161
201
|
])
|
|
162
202
|
], 512),
|
|
163
|
-
|
|
164
|
-
i.value ? (d(),
|
|
165
|
-
|
|
166
|
-
t[
|
|
203
|
+
a("div", me, [
|
|
204
|
+
i.value ? (d(), u("div", ve, [
|
|
205
|
+
a("div", he, [
|
|
206
|
+
t[6] || (t[6] = a("svg", {
|
|
167
207
|
xmlns: "http://www.w3.org/2000/svg",
|
|
168
208
|
class: "h-3.5 w-3.5 text-primary shrink-0",
|
|
169
209
|
viewBox: "0 0 24 24",
|
|
@@ -173,18 +213,18 @@ const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent"
|
|
|
173
213
|
"stroke-linecap": "round",
|
|
174
214
|
"stroke-linejoin": "round"
|
|
175
215
|
}, [
|
|
176
|
-
|
|
216
|
+
a("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" })
|
|
177
217
|
], -1)),
|
|
178
|
-
|
|
218
|
+
a("span", pe, "Editing: " + U(i.value.text), 1)
|
|
179
219
|
]),
|
|
180
|
-
|
|
181
|
-
t[
|
|
182
|
-
|
|
220
|
+
a("div", { class: "flex items-center gap-2 shrink-0" }, [
|
|
221
|
+
t[8] || (t[8] = a("span", { class: "text-[10px] hidden sm:inline-block opacity-60 mr-1" }, "Press Esc to cancel", -1)),
|
|
222
|
+
a("button", {
|
|
183
223
|
onClick: z,
|
|
184
224
|
class: "hover:text-foreground p-0.5 rounded-full hover:bg-muted transition-colors",
|
|
185
225
|
"aria-label": "Cancel editing"
|
|
186
|
-
}, [...t[
|
|
187
|
-
|
|
226
|
+
}, [...t[7] || (t[7] = [
|
|
227
|
+
a("svg", {
|
|
188
228
|
xmlns: "http://www.w3.org/2000/svg",
|
|
189
229
|
class: "h-4 w-4",
|
|
190
230
|
viewBox: "0 0 24 24",
|
|
@@ -194,13 +234,13 @@ const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent"
|
|
|
194
234
|
"stroke-linecap": "round",
|
|
195
235
|
"stroke-linejoin": "round"
|
|
196
236
|
}, [
|
|
197
|
-
|
|
237
|
+
a("line", {
|
|
198
238
|
x1: "18",
|
|
199
239
|
y1: "6",
|
|
200
240
|
x2: "6",
|
|
201
241
|
y2: "18"
|
|
202
242
|
}),
|
|
203
|
-
|
|
243
|
+
a("line", {
|
|
204
244
|
x1: "6",
|
|
205
245
|
y1: "6",
|
|
206
246
|
x2: "18",
|
|
@@ -209,81 +249,81 @@ const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent"
|
|
|
209
249
|
], -1)
|
|
210
250
|
])])
|
|
211
251
|
])
|
|
212
|
-
])) :
|
|
213
|
-
|
|
214
|
-
Array.isArray(o.value) && o.value.length > 0 ? (d(),
|
|
215
|
-
(d(!0),
|
|
216
|
-
key:
|
|
252
|
+
])) : S("", !0),
|
|
253
|
+
a("div", ge, [
|
|
254
|
+
Array.isArray(o.value) && o.value.length > 0 ? (d(), u("div", xe, [
|
|
255
|
+
(d(!0), u(_, null, H(o.value, (l, s) => (d(), u("div", {
|
|
256
|
+
key: s,
|
|
217
257
|
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
258
|
}, [
|
|
219
|
-
|
|
259
|
+
y(V, {
|
|
220
260
|
icon: "lucide:file-text",
|
|
221
261
|
class: "w-4 h-4 text-primary shrink-0"
|
|
222
262
|
}),
|
|
223
|
-
|
|
263
|
+
a("span", {
|
|
224
264
|
class: "text-xs truncate font-medium",
|
|
225
|
-
title:
|
|
226
|
-
},
|
|
227
|
-
|
|
228
|
-
onClick: (
|
|
229
|
-
disabled:
|
|
265
|
+
title: l.fileName
|
|
266
|
+
}, U(l.fileName), 9, ye),
|
|
267
|
+
a("button", {
|
|
268
|
+
onClick: (c) => P(s),
|
|
269
|
+
disabled: w(v),
|
|
230
270
|
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
271
|
}, [
|
|
232
|
-
|
|
272
|
+
y(V, {
|
|
233
273
|
icon: "lucide:x",
|
|
234
274
|
class: "w-3 h-3"
|
|
235
275
|
})
|
|
236
|
-
], 8,
|
|
276
|
+
], 8, we)
|
|
237
277
|
]))), 128))
|
|
238
|
-
])) :
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
278
|
+
])) : S("", !0),
|
|
279
|
+
a("div", be, [
|
|
280
|
+
a("div", ke, [
|
|
281
|
+
y(se, {
|
|
242
282
|
modelValue: o.value,
|
|
243
|
-
"onUpdate:modelValue": t[1] || (t[1] = (
|
|
283
|
+
"onUpdate:modelValue": t[1] || (t[1] = (l) => o.value = l),
|
|
244
284
|
"multi-select": !0,
|
|
245
|
-
"max-size":
|
|
285
|
+
"max-size": r.maxFileSize,
|
|
246
286
|
"return-format": "file"
|
|
247
287
|
}, {
|
|
248
|
-
trigger:
|
|
249
|
-
|
|
288
|
+
trigger: te(({ trigger: l }) => [
|
|
289
|
+
y(N, {
|
|
250
290
|
variant: "ghost",
|
|
251
291
|
size: "sm",
|
|
252
292
|
icon: "lucide:paperclip",
|
|
253
293
|
rounded: "full",
|
|
254
294
|
class: "h-8 w-8 px-0 text-muted-foreground hover:text-foreground transition-colors",
|
|
255
|
-
onClick:
|
|
256
|
-
disabled:
|
|
295
|
+
onClick: l,
|
|
296
|
+
disabled: w(v),
|
|
257
297
|
"aria-label": "Attach files"
|
|
258
298
|
}, null, 8, ["onClick", "disabled"])
|
|
259
299
|
]),
|
|
260
300
|
_: 1
|
|
261
301
|
}, 8, ["modelValue", "max-size"])
|
|
262
302
|
]),
|
|
263
|
-
|
|
303
|
+
le(a("textarea", {
|
|
264
304
|
ref_key: "textareaRef",
|
|
265
|
-
ref:
|
|
266
|
-
"onUpdate:modelValue": t[2] || (t[2] = (
|
|
267
|
-
placeholder:
|
|
268
|
-
disabled:
|
|
305
|
+
ref: n,
|
|
306
|
+
"onUpdate:modelValue": t[2] || (t[2] = (l) => m.value = l),
|
|
307
|
+
placeholder: r.placeholder,
|
|
308
|
+
disabled: w(v),
|
|
269
309
|
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
310
|
rows: "1",
|
|
271
311
|
"aria-label": "Message input",
|
|
272
|
-
onInput:
|
|
273
|
-
onKeydown:
|
|
274
|
-
}, null, 40,
|
|
275
|
-
[
|
|
312
|
+
onInput: I,
|
|
313
|
+
onKeydown: j
|
|
314
|
+
}, null, 40, De), [
|
|
315
|
+
[ae, m.value]
|
|
276
316
|
]),
|
|
277
|
-
|
|
278
|
-
|
|
317
|
+
a("div", Se, [
|
|
318
|
+
y(N, {
|
|
279
319
|
variant: "primary",
|
|
280
320
|
size: "sm",
|
|
281
|
-
icon:
|
|
282
|
-
loading:
|
|
321
|
+
icon: w(v) ? "lucide:loader-2" : i.value ? "lucide:check" : "lucide:send",
|
|
322
|
+
loading: w(v),
|
|
283
323
|
rounded: "full",
|
|
284
324
|
class: "h-8 w-8 px-0 transition-transform active:scale-95",
|
|
285
|
-
disabled: !
|
|
286
|
-
onClick:
|
|
325
|
+
disabled: !F.value,
|
|
326
|
+
onClick: M,
|
|
287
327
|
"aria-label": i.value ? "Save changes" : "Send message"
|
|
288
328
|
}, null, 8, ["icon", "loading", "disabled", "aria-label"])
|
|
289
329
|
])
|
|
@@ -294,5 +334,5 @@ const ae = { class: "flex flex-col w-full h-full flex-1 min-h-0 bg-transparent"
|
|
|
294
334
|
}
|
|
295
335
|
});
|
|
296
336
|
export {
|
|
297
|
-
|
|
337
|
+
Ee as default
|
|
298
338
|
};
|
|
@@ -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.vue.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,7 +1,7 @@
|
|
|
1
1
|
import o from "./DropdownMenu.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import r from "../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-d555d458"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
m as default
|
|
7
7
|
};
|