laif-ds 0.2.80 → 0.2.83
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/dist/CHANGELOG.md +16 -0
- package/dist/agent-docs/adoption-report.json +2 -2
- package/dist/agent-docs/components/Chat.md +1 -0
- package/dist/agent-docs/components/FileUploader.md +8 -3
- package/dist/agent-docs/manifest.json +9 -9
- package/dist/components/ui/chat.js +35 -33
- package/dist/components/ui/file-previewer.js +66 -61
- package/dist/components/ui/file-uploader.js +116 -112
- package/dist/index.d.ts +4 -1
- package/dist/styles.v3.css +1 -1
- package/package.json +1 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { jsxs as
|
|
2
|
+
import { jsxs as z, jsx as i, Fragment as P } from "react/jsx-runtime";
|
|
3
3
|
import l from "react";
|
|
4
|
-
import { Button as
|
|
5
|
-
import { Card as
|
|
6
|
-
import { FilePreview as
|
|
7
|
-
import { Icon as
|
|
8
|
-
import { Input as
|
|
9
|
-
const
|
|
4
|
+
import { Button as _ } from "./button.js";
|
|
5
|
+
import { Card as U, CardHeader as W, CardTitle as H, CardContent as K } from "./card.js";
|
|
6
|
+
import { FilePreview as R } from "./file-preview/index.js";
|
|
7
|
+
import { Icon as O } from "./icon.js";
|
|
8
|
+
import { Input as V } from "./input.js";
|
|
9
|
+
const Z = {
|
|
10
10
|
pdf: "application/pdf",
|
|
11
11
|
doc: ".doc",
|
|
12
12
|
docx: ".docx",
|
|
@@ -31,161 +31,165 @@ const U = {
|
|
|
31
31
|
tar: ".tar,application/x-tar",
|
|
32
32
|
gz: ".gz,application/gzip,application/x-gzip",
|
|
33
33
|
tgz: ".tgz,.tar.gz,application/gzip,application/x-compressed-tar"
|
|
34
|
-
},
|
|
35
|
-
extensions:
|
|
36
|
-
multiple:
|
|
37
|
-
onUpload:
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
34
|
+
}, A = (f) => Math.ceil(f / (1024 * 1024)), re = ({
|
|
35
|
+
extensions: f = ["pdf", "image", "video", "audio"],
|
|
36
|
+
multiple: d = !1,
|
|
37
|
+
onUpload: D,
|
|
38
|
+
onRemove: b,
|
|
39
|
+
description: w = "Trascina un file o clicca per selezionare",
|
|
40
|
+
formatDescription: I = "Formato accettato: PDF, Immagini, Video, Audio",
|
|
41
|
+
selectedLabel: u = "File selezionati",
|
|
42
|
+
maxTotalSize: p,
|
|
43
|
+
removeAllLabel: y = "rimuovi tutto",
|
|
44
|
+
maxFiles: o,
|
|
45
|
+
id: N,
|
|
46
|
+
"data-testid": g
|
|
46
47
|
}) => {
|
|
47
|
-
const
|
|
48
|
-
const
|
|
49
|
-
(
|
|
48
|
+
const x = f.map((e) => Z[e]).join(","), [t, m] = l.useState([]), [j, n] = l.useState(""), C = (e) => {
|
|
49
|
+
const s = Array.from(e).filter(
|
|
50
|
+
(r) => x.split(",").some((a) => (a = a.trim(), r.type.startsWith(a.replace("/*", "")) || r.name.toLowerCase().endsWith(a.replace("*", ""))))
|
|
50
51
|
);
|
|
51
|
-
let
|
|
52
|
-
const
|
|
53
|
-
if (
|
|
54
|
-
let
|
|
55
|
-
if (typeof
|
|
56
|
-
const
|
|
57
|
-
|
|
52
|
+
let c = [];
|
|
53
|
+
const h = [];
|
|
54
|
+
if (d) {
|
|
55
|
+
let r = s;
|
|
56
|
+
if (typeof o == "number") {
|
|
57
|
+
const a = Math.max(o - t.length, 0);
|
|
58
|
+
a < s.length && (r = s.slice(0, a), h.push(`Max ${o} file`));
|
|
58
59
|
}
|
|
59
|
-
if (typeof
|
|
60
|
-
const
|
|
61
|
-
let F =
|
|
62
|
-
const
|
|
63
|
-
let
|
|
64
|
-
for (const
|
|
65
|
-
F + (
|
|
66
|
-
|
|
60
|
+
if (typeof p == "number") {
|
|
61
|
+
const a = p;
|
|
62
|
+
let F = t.reduce((v, S) => v + (S.size || 0), 0);
|
|
63
|
+
const $ = [];
|
|
64
|
+
let k = !1;
|
|
65
|
+
for (const v of r)
|
|
66
|
+
F + (v.size || 0) <= a ? ($.push(v), F += v.size || 0) : k || (h.push(`Max ${A(a)} MB`), k = !0);
|
|
67
|
+
r = $;
|
|
67
68
|
}
|
|
68
|
-
|
|
69
|
+
c = [...t, ...r];
|
|
69
70
|
} else {
|
|
70
|
-
const
|
|
71
|
-
if (typeof
|
|
72
|
-
const
|
|
73
|
-
(
|
|
71
|
+
const r = s[0] ? [s[0]] : [];
|
|
72
|
+
if (typeof p == "number" && r[0]) {
|
|
73
|
+
const a = p;
|
|
74
|
+
(r[0].size || 0) > a ? (h.push(`Max ${A(a)} MB`), c = t) : c = r;
|
|
74
75
|
} else
|
|
75
|
-
|
|
76
|
+
c = r;
|
|
76
77
|
}
|
|
77
|
-
|
|
78
|
+
m(c), n(h.join(" • ")), D?.(c);
|
|
78
79
|
}, E = (e) => {
|
|
79
|
-
e.target.files &&
|
|
80
|
+
e.target.files && C(e.target.files), e.target.value = "";
|
|
80
81
|
}, L = (e) => {
|
|
81
|
-
e.preventDefault(),
|
|
82
|
-
},
|
|
83
|
-
const
|
|
84
|
-
|
|
82
|
+
e.preventDefault(), C(e.dataTransfer.files);
|
|
83
|
+
}, M = (e) => {
|
|
84
|
+
const s = t[e], c = t.filter((h, r) => r !== e);
|
|
85
|
+
m(c), n(""), b?.(s ? [s] : [], c);
|
|
86
|
+
}, B = () => {
|
|
87
|
+
const e = t;
|
|
88
|
+
m([]), n(""), b?.(e, []);
|
|
85
89
|
};
|
|
86
|
-
return /* @__PURE__ */
|
|
87
|
-
(
|
|
88
|
-
|
|
90
|
+
return /* @__PURE__ */ z("div", { className: "mx-auto w-full space-y-4", children: [
|
|
91
|
+
(d || t.length === 0) && /* @__PURE__ */ i(
|
|
92
|
+
q,
|
|
89
93
|
{
|
|
90
|
-
accept:
|
|
91
|
-
multiple:
|
|
94
|
+
accept: x,
|
|
95
|
+
multiple: d,
|
|
92
96
|
onDrop: L,
|
|
93
97
|
onChange: E,
|
|
94
|
-
description:
|
|
95
|
-
formatDescription:
|
|
96
|
-
errorCaption:
|
|
97
|
-
id:
|
|
98
|
-
"data-testid":
|
|
98
|
+
description: w,
|
|
99
|
+
formatDescription: I,
|
|
100
|
+
errorCaption: j,
|
|
101
|
+
id: N,
|
|
102
|
+
"data-testid": g
|
|
99
103
|
}
|
|
100
104
|
),
|
|
101
|
-
|
|
102
|
-
/* @__PURE__ */
|
|
103
|
-
/* @__PURE__ */
|
|
104
|
-
/* @__PURE__ */
|
|
105
|
-
|
|
105
|
+
t.length > 0 && /* @__PURE__ */ i(P, { children: /* @__PURE__ */ z(U, { size: "sm", className: "shadow-none", children: [
|
|
106
|
+
/* @__PURE__ */ z(W, { className: "flex justify-between", children: [
|
|
107
|
+
/* @__PURE__ */ i(H, { children: u }),
|
|
108
|
+
/* @__PURE__ */ i(
|
|
109
|
+
_,
|
|
106
110
|
{
|
|
107
111
|
size: "sm",
|
|
108
112
|
variant: "ghost",
|
|
109
113
|
className: "text-xs",
|
|
110
|
-
onClick:
|
|
111
|
-
children:
|
|
114
|
+
onClick: B,
|
|
115
|
+
children: y
|
|
112
116
|
}
|
|
113
117
|
)
|
|
114
118
|
] }),
|
|
115
|
-
/* @__PURE__ */
|
|
116
|
-
|
|
119
|
+
/* @__PURE__ */ i(K, { children: d ? /* @__PURE__ */ i("div", { className: "flex flex-nowrap gap-2 overflow-x-auto py-2", children: t.map((e, s) => /* @__PURE__ */ i(
|
|
120
|
+
R,
|
|
117
121
|
{
|
|
118
122
|
file: e,
|
|
119
|
-
onRemove: () =>
|
|
123
|
+
onRemove: () => M(s)
|
|
120
124
|
},
|
|
121
|
-
e.name +
|
|
122
|
-
)) }) : /* @__PURE__ */
|
|
125
|
+
e.name + s
|
|
126
|
+
)) }) : /* @__PURE__ */ i(R, { file: t[0], onRemove: () => M(0) }) })
|
|
123
127
|
] }) })
|
|
124
128
|
] });
|
|
125
|
-
},
|
|
126
|
-
accept:
|
|
127
|
-
multiple:
|
|
128
|
-
onDrop:
|
|
129
|
-
onChange:
|
|
130
|
-
description:
|
|
131
|
-
formatDescription:
|
|
132
|
-
errorCaption:
|
|
133
|
-
id:
|
|
134
|
-
"data-testid":
|
|
129
|
+
}, q = ({
|
|
130
|
+
accept: f,
|
|
131
|
+
multiple: d,
|
|
132
|
+
onDrop: D,
|
|
133
|
+
onChange: b,
|
|
134
|
+
description: w,
|
|
135
|
+
formatDescription: I,
|
|
136
|
+
errorCaption: u,
|
|
137
|
+
id: p,
|
|
138
|
+
"data-testid": y
|
|
135
139
|
}) => {
|
|
136
|
-
const
|
|
137
|
-
return /* @__PURE__ */
|
|
140
|
+
const o = l.useRef(null), [N, g] = l.useState(!1), x = l.useId(), t = l.useId(), m = l.useId(), j = l.useId();
|
|
141
|
+
return /* @__PURE__ */ z(
|
|
138
142
|
"div",
|
|
139
143
|
{
|
|
140
|
-
id:
|
|
141
|
-
"data-testid":
|
|
144
|
+
id: p,
|
|
145
|
+
"data-testid": y,
|
|
142
146
|
role: "button",
|
|
143
147
|
tabIndex: 0,
|
|
144
|
-
"aria-label":
|
|
145
|
-
"aria-describedby": `${
|
|
146
|
-
onKeyDown: (
|
|
147
|
-
(
|
|
148
|
+
"aria-label": w || "Seleziona file",
|
|
149
|
+
"aria-describedby": `${x} ${t}${u ? ` ${m}` : ""}`,
|
|
150
|
+
onKeyDown: (n) => {
|
|
151
|
+
(n.key === "Enter" || n.key === " ") && (n.preventDefault(), o.current && (o.current.value = "", o.current.click()));
|
|
148
152
|
},
|
|
149
153
|
onClick: () => {
|
|
150
|
-
|
|
154
|
+
o.current && (o.current.value = "", o.current.click());
|
|
151
155
|
},
|
|
152
|
-
onDragEnter: () =>
|
|
153
|
-
onDragOver: (
|
|
154
|
-
onDragLeave: () =>
|
|
155
|
-
onDrop: (
|
|
156
|
-
|
|
156
|
+
onDragEnter: () => g(!0),
|
|
157
|
+
onDragOver: (n) => n.preventDefault(),
|
|
158
|
+
onDragLeave: () => g(!1),
|
|
159
|
+
onDrop: (n) => {
|
|
160
|
+
g(!1), D(n);
|
|
157
161
|
},
|
|
158
|
-
className: `border-d-border flex w-full cursor-pointer flex-col items-center gap-3 rounded-lg border-2 border-dashed px-4 py-8 ${
|
|
162
|
+
className: `border-d-border flex w-full cursor-pointer flex-col items-center gap-3 rounded-lg border-2 border-dashed px-4 py-8 ${N ? "bg-muted/40" : ""}`,
|
|
159
163
|
children: [
|
|
160
|
-
/* @__PURE__ */
|
|
161
|
-
|
|
164
|
+
/* @__PURE__ */ i(
|
|
165
|
+
O,
|
|
162
166
|
{
|
|
163
167
|
name: "ArrowUpFromLine",
|
|
164
168
|
className: "text-d-muted-foreground h-10 w-10"
|
|
165
169
|
}
|
|
166
170
|
),
|
|
167
|
-
/* @__PURE__ */
|
|
168
|
-
/* @__PURE__ */
|
|
169
|
-
/* @__PURE__ */
|
|
171
|
+
/* @__PURE__ */ z("div", { className: "max-w-xs text-center", children: [
|
|
172
|
+
/* @__PURE__ */ i("p", { id: x, className: "text-d-muted-foreground text-sm font-medium", children: w }),
|
|
173
|
+
/* @__PURE__ */ i(
|
|
170
174
|
"p",
|
|
171
175
|
{
|
|
172
|
-
id:
|
|
176
|
+
id: t,
|
|
173
177
|
className: "text-d-muted-foreground text-muted-foreground mt-1 text-xs",
|
|
174
|
-
children:
|
|
178
|
+
children: I
|
|
175
179
|
}
|
|
176
180
|
),
|
|
177
|
-
|
|
181
|
+
u ? /* @__PURE__ */ i("p", { id: m, className: "mt-2 text-xs font-medium text-red-600", children: u }) : null
|
|
178
182
|
] }),
|
|
179
|
-
/* @__PURE__ */
|
|
180
|
-
|
|
183
|
+
/* @__PURE__ */ i(
|
|
184
|
+
V,
|
|
181
185
|
{
|
|
182
|
-
ref:
|
|
183
|
-
id:
|
|
186
|
+
ref: o,
|
|
187
|
+
id: j,
|
|
184
188
|
type: "file",
|
|
185
189
|
className: "hidden",
|
|
186
|
-
accept:
|
|
187
|
-
multiple:
|
|
188
|
-
onChange:
|
|
190
|
+
accept: f,
|
|
191
|
+
multiple: d,
|
|
192
|
+
onChange: b
|
|
189
193
|
}
|
|
190
194
|
)
|
|
191
195
|
]
|
|
@@ -193,5 +197,5 @@ const U = {
|
|
|
193
197
|
);
|
|
194
198
|
};
|
|
195
199
|
export {
|
|
196
|
-
|
|
200
|
+
re as FileUploader
|
|
197
201
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -979,7 +979,7 @@ export declare function ChartTooltipContent({ active, payload, className, indica
|
|
|
979
979
|
labelKey?: string;
|
|
980
980
|
} & React_2.HTMLAttributes<HTMLDivElement>): JSX.Element | null;
|
|
981
981
|
|
|
982
|
-
export declare function Chat({ messages, welcomeTitle, handleSubmit, input, handleInputChange, stop, isGenerating, append, suggestions, className, onRateResponse, setMessages, transcribeAudio, allowAttachments, onEdit, onMessageSave, }: ChatProps): JSX.Element;
|
|
982
|
+
export declare function Chat({ messages, welcomeTitle, handleSubmit, input, handleInputChange, stop, isGenerating, append, suggestions, className, onRateResponse, setMessages, transcribeAudio, allowAttachments, onEdit, onMessageSave, placeholder, }: ChatProps): JSX.Element;
|
|
983
983
|
|
|
984
984
|
export declare namespace Chat {
|
|
985
985
|
var displayName: string;
|
|
@@ -1042,6 +1042,7 @@ declare interface ChatPropsBase {
|
|
|
1042
1042
|
onEdit?: (messageId: string, newContent: string) => void;
|
|
1043
1043
|
onMessageSave?: (messageId: string, content: string) => void;
|
|
1044
1044
|
welcomeTitle?: string;
|
|
1045
|
+
placeholder?: string;
|
|
1045
1046
|
}
|
|
1046
1047
|
|
|
1047
1048
|
declare interface ChatPropsWithoutSuggestions extends ChatPropsBase {
|
|
@@ -2092,6 +2093,7 @@ declare interface FileUploaderProps {
|
|
|
2092
2093
|
extensions?: AcceptItem[];
|
|
2093
2094
|
multiple?: boolean;
|
|
2094
2095
|
onUpload?: (files: File[]) => void;
|
|
2096
|
+
onRemove?: (removed: File[], remaining: File[]) => void;
|
|
2095
2097
|
description?: string;
|
|
2096
2098
|
formatDescription?: string;
|
|
2097
2099
|
selectedLabel?: string;
|
|
@@ -2736,6 +2738,7 @@ declare interface PreviewOptions {
|
|
|
2736
2738
|
title?: default_2.ReactNode;
|
|
2737
2739
|
readOnly?: boolean;
|
|
2738
2740
|
page?: number;
|
|
2741
|
+
size?: "sm" | "default" | "lg" | "xl" | "full";
|
|
2739
2742
|
}
|
|
2740
2743
|
|
|
2741
2744
|
export declare function Progress({ className, value, ...props }: React_2.ComponentProps<typeof ProgressPrimitive.Root>): JSX.Element;
|