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.
Files changed (49) hide show
  1. package/components/AttachmentsList/AttachmentsList.vue.d.ts +19 -3
  2. package/components/AttachmentsList/AttachmentsList.vue.js +274 -111
  3. package/components/AttachmentsList/fileTypeIcon.d.ts +16 -0
  4. package/components/AttachmentsList/fileTypeIcon.js +127 -0
  5. package/components/AttachmentsList/index.d.ts +1 -0
  6. package/components/AttachmentsList/types.d.ts +74 -2
  7. package/components/Avatar.vue.js +2 -2
  8. package/components/Badge.vue.js +7 -7
  9. package/components/Button.vue.js +36 -43
  10. package/components/ButtonGroup.vue.js +2 -2
  11. package/components/ButtonGroup.vue2.js +8 -8
  12. package/components/CategoryManager/CategoryManager.vue.d.ts +36 -0
  13. package/components/CategoryManager/CategoryNode.vue.d.ts +15 -0
  14. package/components/CategoryManager/index.d.ts +2 -0
  15. package/components/CategoryManager/types.d.ts +43 -0
  16. package/components/Chat/ChatBubble.vue.js +70 -56
  17. package/components/Chat/ChatInterface.vue.js +182 -142
  18. package/components/CommandPalette/CommandPaletteContent.vue2.js +1 -1
  19. package/components/CommandPalette/{CommandPaletteItem.vue2.js → CommandPaletteItem.vue.js} +1 -1
  20. package/components/Dropdown/DropdownMenu.vue.js +2 -2
  21. package/components/Dropdown/DropdownMenu.vue2.js +1 -0
  22. package/components/FilePicker/FilePicker.vue.js +117 -122
  23. package/components/Input.vue.js +28 -26
  24. package/components/Kanban/Kanban.vue.d.ts +7 -16
  25. package/components/Kanban/Kanban.vue.js +1 -1
  26. package/components/Kanban/Kanban.vue2.js +79 -47
  27. package/components/Kanban/KanbanBoard.vue.js +2 -2
  28. package/components/Kanban/KanbanBoard.vue2.js +21 -21
  29. package/components/Kanban/types.d.ts +3 -0
  30. package/components/List/List.vue.js +89 -85
  31. package/components/Navbar/Navbar.vue.d.ts +4 -0
  32. package/components/Navbar/Navbar.vue.js +196 -173
  33. package/components/Navbar/NavbarTabs.vue.js +72 -66
  34. package/components/NavbarCommandPalette.vue.js +11 -11
  35. package/components/NumberInput.vue.js +2 -2
  36. package/components/NumberInput.vue2.js +144 -104
  37. package/components/Screen/Screen.vue.d.ts +12 -29
  38. package/components/Screen/Screen.vue.js +228 -195
  39. package/components/Screen/components/ScreenViewToggle.vue.d.ts +6 -3
  40. package/components/Screen/components/ScreenViewToggle.vue.js +29 -34
  41. package/components/Screen/types.d.ts +59 -7
  42. package/components/Stats/Stats.vue.d.ts +1 -0
  43. package/components/Stats/Stats.vue.js +184 -156
  44. package/components/Stats/types.d.ts +1 -0
  45. package/components/Workbook/Sheet.vue.d.ts +1 -1
  46. package/directives/vRipple.js +28 -9
  47. package/index.js +87 -85
  48. package/package.json +1 -1
  49. package/style.css +1 -1
@@ -1,22 +1,26 @@
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";
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 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 = {
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
- }, se = {
10
+ }, de = {
11
11
  key: 1,
12
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 = {
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
- }, 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 = {
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
- }, 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({
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(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(
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 && w.data.length > 0 && !w.isLoadingMore && (E.value = u.value.scrollHeight, y.value = !0, C("refetch"));
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: u.value,
49
+ root: f.value,
46
50
  threshold: 0
47
51
  }
48
- ), b.observe(T.value)), A();
49
- }), q(() => {
50
- b && b.disconnect();
51
- }), G(
52
- () => w.data.length,
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 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();
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 U(), u.value && u.value.scrollTo({
64
- top: u.value.scrollHeight,
67
+ await B(), f.value && f.value.scrollTo({
68
+ top: f.value.scrollHeight,
65
69
  behavior: "smooth"
66
70
  });
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();
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, 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 = "";
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 n = [];
95
+ let s = [];
92
96
  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 !== "");
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
- C("add", e, n.length > 0 ? n : void 0), o.value = [], c.value = "";
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
- r.value && (r.value.style.height = "auto", r.value.focus()), a || A();
107
- };
108
- return (e, t) => (d(), v("div", ae, [
109
- l("div", {
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: u,
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
- l("div", {
150
+ a("div", {
119
151
  ref_key: "observerTargetRef",
120
- ref: T,
152
+ ref: C,
121
153
  class: "h-1 w-full shrink-0"
122
154
  }, null, 512),
123
- s.isLoadingMore ? (d(), v("div", oe, [...t[3] || (t[3] = [
124
- l("svg", {
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
- l("circle", {
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
- l("path", {
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
- 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))
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
- l("div", ie, [
164
- i.value ? (d(), v("div", ne, [
165
- l("div", de, [
166
- t[4] || (t[4] = l("svg", {
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
- l("path", { d: "M17 3a2.828 2.828 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5L17 3z" })
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
- l("span", ue, "Editing: " + H(i.value.text), 1)
218
+ a("span", pe, "Editing: " + U(i.value.text), 1)
179
219
  ]),
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", {
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[5] || (t[5] = [
187
- l("svg", {
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
- l("line", {
237
+ a("line", {
198
238
  x1: "18",
199
239
  y1: "6",
200
240
  x2: "6",
201
241
  y2: "18"
202
242
  }),
203
- l("line", {
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
- ])) : 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,
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
- g(V, {
259
+ y(V, {
220
260
  icon: "lucide:file-text",
221
261
  class: "w-4 h-4 text-primary shrink-0"
222
262
  }),
223
- l("span", {
263
+ a("span", {
224
264
  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),
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
- g(V, {
272
+ y(V, {
233
273
  icon: "lucide:x",
234
274
  class: "w-3 h-3"
235
275
  })
236
- ], 8, ve)
276
+ ], 8, we)
237
277
  ]))), 128))
238
- ])) : k("", !0),
239
- l("div", he, [
240
- l("div", pe, [
241
- g(le, {
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] = (a) => o.value = a),
283
+ "onUpdate:modelValue": t[1] || (t[1] = (l) => o.value = l),
244
284
  "multi-select": !0,
245
- "max-size": s.maxFileSize,
285
+ "max-size": r.maxFileSize,
246
286
  "return-format": "file"
247
287
  }, {
248
- trigger: X(({ trigger: a }) => [
249
- g(N, {
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: a,
256
- disabled: x(f),
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
- Y(l("textarea", {
303
+ le(a("textarea", {
264
304
  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),
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: S,
273
- onKeydown: $
274
- }, null, 40, ge), [
275
- [Z, c.value]
312
+ onInput: I,
313
+ onKeydown: j
314
+ }, null, 40, De), [
315
+ [ae, m.value]
276
316
  ]),
277
- l("div", xe, [
278
- g(N, {
317
+ a("div", Se, [
318
+ y(N, {
279
319
  variant: "primary",
280
320
  size: "sm",
281
- icon: x(f) ? "lucide:loader-2" : i.value ? "lucide:check" : "lucide:send",
282
- loading: x(f),
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: !I.value,
286
- onClick: D,
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
- Ae as default
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.vue2.js";
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,5 +1,5 @@
1
1
  import t from "./CommandPaletteItem.vue3.js";
2
- /* empty css */
2
+ /* empty css */
3
3
  import o from "../../_virtual/_plugin-vue_export-helper.js";
4
4
  const r = /* @__PURE__ */ o(t, [["__scopeId", "data-v-66b1ae06"]]);
5
5
  export {
@@ -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 e = /* @__PURE__ */ r(o, [["__scopeId", "data-v-c4c5d9e4"]]);
4
+ const m = /* @__PURE__ */ r(o, [["__scopeId", "data-v-d555d458"]]);
5
5
  export {
6
- e as default
6
+ m as default
7
7
  };
@@ -135,6 +135,7 @@ const ve = ["dir"], ye = {
135
135
  placeholder: R.value,
136
136
  icon: "lucide:search",
137
137
  size: "sm",
138
+ autofocus: !0,
138
139
  class: "font-medium!",
139
140
  "input-class": "-ml-1",
140
141
  variant: "transparent",