@orion-ds/react 4.2.11 → 4.2.14
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/index10.cjs +1 -1
- package/dist/index10.mjs +1 -1
- package/dist/index100.cjs +1 -1
- package/dist/index100.mjs +46 -14
- package/dist/index101.cjs +1 -1
- package/dist/index101.mjs +14 -28
- package/dist/index102.cjs +1 -1
- package/dist/index102.mjs +28 -27
- package/dist/index103.cjs +1 -1
- package/dist/index103.mjs +29 -29
- package/dist/index104.cjs +1 -1
- package/dist/index104.mjs +44 -20
- package/dist/index105.cjs +1 -1
- package/dist/index105.mjs +52 -44
- package/dist/index106.cjs +1 -1
- package/dist/index106.mjs +42 -54
- package/dist/index107.cjs +1 -1
- package/dist/index107.mjs +18 -40
- package/dist/index108.cjs +1 -1
- package/dist/index108.mjs +50 -36
- package/dist/index109.cjs +1 -1
- package/dist/index109.mjs +20 -64
- package/dist/index11.cjs +1 -1
- package/dist/index11.mjs +1 -1
- package/dist/index110.cjs +1 -1
- package/dist/index110.mjs +36 -24
- package/dist/index111.cjs +1 -1
- package/dist/index111.mjs +20 -52
- package/dist/index112.cjs +1 -1
- package/dist/index112.mjs +29 -37
- package/dist/index113.cjs +1 -1
- package/dist/index113.mjs +18 -28
- package/dist/index114.cjs +1 -1
- package/dist/index114.mjs +62 -44
- package/dist/index116.cjs +1 -1
- package/dist/index116.mjs +12 -36
- package/dist/index117.cjs +1 -1
- package/dist/index117.mjs +35 -28
- package/dist/index118.cjs +1 -1
- package/dist/index118.mjs +49 -19
- package/dist/index119.cjs +1 -1
- package/dist/index119.mjs +36 -38
- package/dist/index12.cjs +1 -1
- package/dist/index12.mjs +1 -1
- package/dist/index120.cjs +1 -1
- package/dist/index120.mjs +32 -40
- package/dist/index121.cjs +1 -1
- package/dist/index121.mjs +27 -28
- package/dist/index122.cjs +1 -1
- package/dist/index122.mjs +12 -52
- package/dist/index123.cjs +1 -1
- package/dist/index123.mjs +40 -32
- package/dist/index125.cjs +1 -1
- package/dist/index125.mjs +42 -35
- package/dist/index126.cjs +1 -1
- package/dist/index126.mjs +27 -27
- package/dist/index127.cjs +1 -1
- package/dist/index127.mjs +37 -21
- package/dist/index128.cjs +1 -1
- package/dist/index128.mjs +26 -44
- package/dist/index129.cjs +1 -1
- package/dist/index129.mjs +55 -51
- package/dist/index13.cjs +1 -1
- package/dist/index13.mjs +1 -1
- package/dist/index130.cjs +1 -1
- package/dist/index130.mjs +20 -64
- package/dist/index131.cjs +1 -1
- package/dist/index131.mjs +26 -44
- package/dist/index132.cjs +1 -1
- package/dist/index132.mjs +52 -42
- package/dist/index133.cjs +1 -1
- package/dist/index133.mjs +106 -28
- package/dist/index134.cjs +1 -1
- package/dist/index134.mjs +55 -12
- package/dist/index135.cjs +1 -1
- package/dist/index135.mjs +18 -20
- package/dist/index136.cjs +1 -1
- package/dist/index136.mjs +65 -24
- package/dist/index137.cjs +1 -1
- package/dist/index137.mjs +64 -16
- package/dist/index138.cjs +1 -1
- package/dist/index138.mjs +28 -50
- package/dist/index139.cjs +1 -1
- package/dist/index139.mjs +24 -40
- package/dist/index14.cjs +1 -1
- package/dist/index14.mjs +1 -1
- package/dist/index140.cjs +1 -1
- package/dist/index140.mjs +18 -42
- package/dist/index141.cjs +1 -1
- package/dist/index141.mjs +24 -18
- package/dist/index142.cjs +1 -1
- package/dist/index142.mjs +40 -55
- package/dist/index143.cjs +1 -1
- package/dist/index143.mjs +22 -65
- package/dist/index144.cjs +1 -1
- package/dist/index144.mjs +46 -33
- package/dist/index145.cjs +1 -1
- package/dist/index145.mjs +20 -18
- package/dist/index146.cjs +1 -1
- package/dist/index146.mjs +33 -67
- package/dist/index147.cjs +1 -1
- package/dist/index147.mjs +24 -56
- package/dist/index148.cjs +1 -1
- package/dist/index148.mjs +67 -18
- package/dist/index149.cjs +1 -1
- package/dist/index149.mjs +46 -62
- package/dist/index15.cjs +1 -1
- package/dist/index15.mjs +1 -1
- package/dist/index150.cjs +1 -1
- package/dist/index150.mjs +24 -76
- package/dist/index151.cjs +1 -1
- package/dist/index151.mjs +45 -24
- package/dist/index152.cjs +1 -1
- package/dist/index152.mjs +42 -32
- package/dist/index154.cjs +1 -1
- package/dist/index154.mjs +64 -30
- package/dist/index155.cjs +1 -1
- package/dist/index155.mjs +53 -106
- package/dist/index156.cjs +1 -1
- package/dist/index156.mjs +76 -45
- package/dist/index157.cjs +1 -1
- package/dist/index157.mjs +38 -234
- package/dist/index158.cjs +1 -1
- package/dist/index158.mjs +235 -34
- package/dist/index159.cjs +1 -1
- package/dist/index159.mjs +32 -42
- package/dist/index16.cjs +1 -1
- package/dist/index16.mjs +1 -1
- package/dist/index160.cjs +1 -1
- package/dist/index160.mjs +42 -169
- package/dist/index161.cjs +1 -1
- package/dist/index161.mjs +162 -177
- package/dist/index162.cjs +1 -1
- package/dist/index162.mjs +181 -24
- package/dist/index163.cjs +1 -1
- package/dist/index163.mjs +28 -90
- package/dist/index164.cjs +1 -1
- package/dist/index164.mjs +89 -51
- package/dist/index165.cjs +1 -1
- package/dist/index165.mjs +49 -63
- package/dist/index166.cjs +1 -1
- package/dist/index166.mjs +60 -118
- package/dist/index167.cjs +1 -1
- package/dist/index167.mjs +109 -93
- package/dist/index168.cjs +1 -1
- package/dist/index168.mjs +97 -100
- package/dist/index169.cjs +1 -1
- package/dist/index169.mjs +101 -112
- package/dist/index17.cjs +1 -1
- package/dist/index17.mjs +1 -1
- package/dist/index170.cjs +1 -1
- package/dist/index170.mjs +118 -210
- package/dist/index171.cjs +1 -1
- package/dist/index171.mjs +214 -33
- package/dist/index172.cjs +1 -1
- package/dist/index172.mjs +44 -26
- package/dist/index173.cjs +1 -1
- package/dist/index173.mjs +30 -20
- package/dist/index174.cjs +1 -1
- package/dist/index174.mjs +36 -46
- package/dist/index175.cjs +1 -1
- package/dist/index175.mjs +56 -28
- package/dist/index176.cjs +1 -1
- package/dist/index176.mjs +30 -57
- package/dist/index177.cjs +1 -1
- package/dist/index177.mjs +32 -24
- package/dist/index178.cjs +1 -1
- package/dist/index178.mjs +28 -12
- package/dist/index179.cjs +1 -1
- package/dist/index179.mjs +28 -18
- package/dist/index18.cjs +1 -1
- package/dist/index18.mjs +1 -1
- package/dist/index180.cjs +1 -1
- package/dist/index180.mjs +16 -38
- package/dist/index181.cjs +1 -1
- package/dist/index181.mjs +33 -30
- package/dist/index185.cjs +1 -1
- package/dist/index185.mjs +1 -1
- package/dist/index19.cjs +1 -1
- package/dist/index19.mjs +2 -2
- package/dist/index20.cjs +1 -1
- package/dist/index20.mjs +14 -14
- package/dist/index22.cjs +1 -1
- package/dist/index22.mjs +1 -1
- package/dist/index23.cjs +1 -1
- package/dist/index23.mjs +1 -1
- package/dist/index24.cjs +1 -1
- package/dist/index24.mjs +1 -1
- package/dist/index25.cjs +1 -1
- package/dist/index25.mjs +1 -1
- package/dist/index27.cjs +1 -1
- package/dist/index27.mjs +1 -1
- package/dist/index28.cjs +1 -1
- package/dist/index28.mjs +1 -1
- package/dist/index30.cjs +1 -1
- package/dist/index30.mjs +1 -1
- package/dist/index31.cjs +1 -1
- package/dist/index31.mjs +1 -1
- package/dist/index32.cjs +1 -1
- package/dist/index32.mjs +1 -1
- package/dist/index33.cjs +1 -1
- package/dist/index33.mjs +1 -1
- package/dist/index34.cjs +1 -1
- package/dist/index34.mjs +1 -1
- package/dist/index35.cjs +1 -1
- package/dist/index35.mjs +1 -1
- package/dist/index36.cjs +1 -1
- package/dist/index36.mjs +1 -1
- package/dist/index37.cjs +1 -1
- package/dist/index37.mjs +1 -1
- package/dist/index38.cjs +1 -1
- package/dist/index38.mjs +1 -1
- package/dist/index39.cjs +1 -1
- package/dist/index39.mjs +1 -1
- package/dist/index40.cjs +1 -1
- package/dist/index40.mjs +1 -1
- package/dist/index42.cjs +1 -1
- package/dist/index42.mjs +1 -1
- package/dist/index43.cjs +1 -1
- package/dist/index43.mjs +1 -1
- package/dist/index44.cjs +1 -1
- package/dist/index44.mjs +1 -1
- package/dist/index46.cjs +1 -1
- package/dist/index46.mjs +1 -1
- package/dist/index47.cjs +1 -1
- package/dist/index47.mjs +1 -1
- package/dist/index49.cjs +1 -1
- package/dist/index49.mjs +1 -1
- package/dist/index5.cjs +1 -1
- package/dist/index5.mjs +1 -1
- package/dist/index50.cjs +1 -1
- package/dist/index50.mjs +1 -1
- package/dist/index51.cjs +1 -1
- package/dist/index51.mjs +1 -1
- package/dist/index52.cjs +1 -1
- package/dist/index52.mjs +1 -1
- package/dist/index53.cjs +1 -1
- package/dist/index53.mjs +1 -1
- package/dist/index54.cjs +1 -1
- package/dist/index54.mjs +1 -1
- package/dist/index55.cjs +1 -1
- package/dist/index55.mjs +1 -1
- package/dist/index56.cjs +1 -1
- package/dist/index56.mjs +1 -1
- package/dist/index57.cjs +1 -1
- package/dist/index57.mjs +1 -1
- package/dist/index58.cjs +1 -1
- package/dist/index58.mjs +1 -1
- package/dist/index59.cjs +1 -1
- package/dist/index59.mjs +1 -1
- package/dist/index6.cjs +1 -1
- package/dist/index6.mjs +1 -1
- package/dist/index60.cjs +1 -1
- package/dist/index60.mjs +1 -1
- package/dist/index61.cjs +1 -1
- package/dist/index61.mjs +1 -1
- package/dist/index62.cjs +1 -1
- package/dist/index62.mjs +1 -1
- package/dist/index64.cjs +1 -1
- package/dist/index64.mjs +1 -1
- package/dist/index65.cjs +1 -1
- package/dist/index65.mjs +1 -1
- package/dist/index66.cjs +1 -1
- package/dist/index66.mjs +1 -1
- package/dist/index67.cjs +1 -1
- package/dist/index67.mjs +1 -1
- package/dist/index69.cjs +1 -1
- package/dist/index69.mjs +1 -1
- package/dist/index7.cjs +1 -1
- package/dist/index7.mjs +1 -1
- package/dist/index70.cjs +1 -1
- package/dist/index70.mjs +1 -1
- package/dist/index71.cjs +1 -1
- package/dist/index71.mjs +1 -1
- package/dist/index72.cjs +1 -1
- package/dist/index72.mjs +1 -1
- package/dist/index73.cjs +1 -1
- package/dist/index73.mjs +1 -1
- package/dist/index76.cjs +1 -1
- package/dist/index76.mjs +1 -1
- package/dist/index77.cjs +1 -1
- package/dist/index77.mjs +1 -1
- package/dist/index78.cjs +1 -1
- package/dist/index78.mjs +1 -1
- package/dist/index79.cjs +1 -1
- package/dist/index79.mjs +1 -1
- package/dist/index8.cjs +1 -1
- package/dist/index8.mjs +1 -1
- package/dist/index80.cjs +1 -1
- package/dist/index80.mjs +1 -1
- package/dist/index81.cjs +1 -1
- package/dist/index81.mjs +1 -1
- package/dist/index82.cjs +1 -1
- package/dist/index82.mjs +2 -2
- package/dist/index9.cjs +1 -1
- package/dist/index9.mjs +1 -1
- package/dist/index97.cjs +1 -1
- package/dist/index97.mjs +154 -30
- package/dist/index98.cjs +1 -1
- package/dist/index98.mjs +202 -138
- package/dist/index99.cjs +1 -1
- package/dist/index99.mjs +30 -218
- package/package.json +1 -1
package/dist/index169.mjs
CHANGED
|
@@ -1,125 +1,114 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
return /* @__PURE__ */ e(w, { size: 18 });
|
|
16
|
-
default:
|
|
17
|
-
return /* @__PURE__ */ e(P, { size: 18 });
|
|
18
|
-
}
|
|
19
|
-
}, $ = ({
|
|
20
|
-
attachment: d,
|
|
21
|
-
removable: h = !1,
|
|
22
|
-
onRemove: a,
|
|
23
|
-
onClick: n,
|
|
24
|
-
className: s,
|
|
25
|
-
...c
|
|
1
|
+
import { jsxs as d, jsx as p, Fragment as A } from "react/jsx-runtime";
|
|
2
|
+
import { useState as I, useRef as W, useCallback as a } from "react";
|
|
3
|
+
import { Upload as $ } from "lucide-react";
|
|
4
|
+
import { formatFileSize as g } from "./index184.mjs";
|
|
5
|
+
import l from "./index158.mjs";
|
|
6
|
+
const P = ({
|
|
7
|
+
onFilesSelected: h,
|
|
8
|
+
accept: s = ["*/*"],
|
|
9
|
+
multiple: m = !0,
|
|
10
|
+
maxSize: r = 10 * 1024 * 1024,
|
|
11
|
+
// 10MB default
|
|
12
|
+
children: D,
|
|
13
|
+
className: v,
|
|
14
|
+
...y
|
|
26
15
|
}) => {
|
|
27
|
-
const
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
{
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
)
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
className: t.attachmentPreviewRemove,
|
|
45
|
-
onClick: (r) => {
|
|
46
|
-
r.stopPropagation(), a();
|
|
47
|
-
},
|
|
48
|
-
"aria-label": `Remove ${i}`,
|
|
49
|
-
style: {
|
|
50
|
-
position: "absolute",
|
|
51
|
-
top: 4,
|
|
52
|
-
right: 4,
|
|
53
|
-
background: "var(--surface-base)"
|
|
54
|
-
},
|
|
55
|
-
children: /* @__PURE__ */ e(u, { size: 14 })
|
|
56
|
-
}
|
|
57
|
-
)
|
|
58
|
-
] });
|
|
59
|
-
break;
|
|
60
|
-
case "audio":
|
|
61
|
-
if (l)
|
|
62
|
-
return /* @__PURE__ */ o("div", { className: s, style: { position: "relative" }, ...c, children: [
|
|
63
|
-
/* @__PURE__ */ e(N, { src: l, duration: m, title: i }),
|
|
64
|
-
h && a && /* @__PURE__ */ e(
|
|
65
|
-
"button",
|
|
66
|
-
{
|
|
67
|
-
className: t.attachmentPreviewRemove,
|
|
68
|
-
onClick: (r) => {
|
|
69
|
-
r.stopPropagation(), a();
|
|
70
|
-
},
|
|
71
|
-
"aria-label": `Remove ${i}`,
|
|
72
|
-
children: /* @__PURE__ */ e(u, { size: 14 })
|
|
73
|
-
}
|
|
74
|
-
)
|
|
75
|
-
] });
|
|
76
|
-
break;
|
|
77
|
-
case "code":
|
|
78
|
-
if (v)
|
|
79
|
-
return /* @__PURE__ */ e(
|
|
80
|
-
I,
|
|
81
|
-
{
|
|
82
|
-
code: v,
|
|
83
|
-
language: b,
|
|
84
|
-
className: s,
|
|
85
|
-
...c
|
|
16
|
+
const [U, f] = I(!1), i = W(null), c = a(
|
|
17
|
+
(e) => {
|
|
18
|
+
if (!e || e.length === 0) return;
|
|
19
|
+
const o = [];
|
|
20
|
+
Array.from(e).forEach((t) => {
|
|
21
|
+
if (r && t.size > r) {
|
|
22
|
+
console.warn(
|
|
23
|
+
`File ${t.name} exceeds max size of ${g(r)}`
|
|
24
|
+
);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const j = s.includes("*/*"), w = s.flatMap((n) => (n.endsWith("/*"), n));
|
|
28
|
+
if (!(j || w.some((n) => {
|
|
29
|
+
if (n.endsWith("/*")) {
|
|
30
|
+
const x = n.split("/")[0];
|
|
31
|
+
return t.type.startsWith(`${x}/`);
|
|
86
32
|
}
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
33
|
+
return t.type === n || t.name.endsWith(n);
|
|
34
|
+
}))) {
|
|
35
|
+
console.warn(`File ${t.name} type not accepted`);
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
o.push(t);
|
|
39
|
+
}), o.length > 0 && h?.(o);
|
|
40
|
+
},
|
|
41
|
+
[s, r, h]
|
|
42
|
+
), C = a((e) => {
|
|
43
|
+
e.preventDefault(), e.stopPropagation(), f(!0);
|
|
44
|
+
}, []), k = a((e) => {
|
|
45
|
+
e.preventDefault(), e.stopPropagation(), f(!1);
|
|
46
|
+
}, []), F = a(
|
|
47
|
+
(e) => {
|
|
48
|
+
e.preventDefault(), e.stopPropagation(), f(!1);
|
|
49
|
+
const { files: o } = e.dataTransfer;
|
|
50
|
+
c(o);
|
|
51
|
+
},
|
|
52
|
+
[c]
|
|
53
|
+
), N = a(
|
|
54
|
+
(e) => {
|
|
55
|
+
c(e.target.files), i.current && (i.current.value = "");
|
|
56
|
+
},
|
|
57
|
+
[c]
|
|
58
|
+
), u = a(() => {
|
|
59
|
+
i.current?.click();
|
|
60
|
+
}, []), b = a(
|
|
61
|
+
(e) => {
|
|
62
|
+
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), u());
|
|
63
|
+
},
|
|
64
|
+
[u]
|
|
65
|
+
);
|
|
66
|
+
return /* @__PURE__ */ d(
|
|
91
67
|
"div",
|
|
92
68
|
{
|
|
93
|
-
className: [
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
69
|
+
className: [
|
|
70
|
+
l.fileUpload,
|
|
71
|
+
U && l.fileUploadDragging,
|
|
72
|
+
v
|
|
73
|
+
].filter(Boolean).join(" "),
|
|
74
|
+
onDragOver: C,
|
|
75
|
+
onDragLeave: k,
|
|
76
|
+
onDrop: F,
|
|
77
|
+
onClick: u,
|
|
78
|
+
onKeyDown: b,
|
|
79
|
+
role: "button",
|
|
80
|
+
tabIndex: 0,
|
|
81
|
+
"aria-label": "Upload files",
|
|
82
|
+
...y,
|
|
98
83
|
children: [
|
|
99
|
-
/* @__PURE__ */
|
|
100
|
-
|
|
101
|
-
/* @__PURE__ */ e("span", { className: t.attachmentPreviewName, children: i }),
|
|
102
|
-
f && /* @__PURE__ */ o("span", { className: t.attachmentPreviewMeta, children: [
|
|
103
|
-
k(f),
|
|
104
|
-
m && ` · ${Math.floor(m / 60)}:${(m % 60).toString().padStart(2, "0")}`
|
|
105
|
-
] })
|
|
106
|
-
] }),
|
|
107
|
-
h && a && /* @__PURE__ */ e(
|
|
108
|
-
"button",
|
|
84
|
+
/* @__PURE__ */ p(
|
|
85
|
+
"input",
|
|
109
86
|
{
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
87
|
+
ref: i,
|
|
88
|
+
type: "file",
|
|
89
|
+
accept: s.join(","),
|
|
90
|
+
multiple: m,
|
|
91
|
+
onChange: N,
|
|
92
|
+
style: { display: "none" },
|
|
93
|
+
"aria-hidden": "true"
|
|
116
94
|
}
|
|
117
|
-
)
|
|
95
|
+
),
|
|
96
|
+
D || /* @__PURE__ */ d(A, { children: [
|
|
97
|
+
/* @__PURE__ */ p("div", { className: l.fileUploadIcon, children: /* @__PURE__ */ p($, { size: 32 }) }),
|
|
98
|
+
/* @__PURE__ */ d("div", { className: l.fileUploadText, children: [
|
|
99
|
+
/* @__PURE__ */ p("strong", { children: "Click to upload" }),
|
|
100
|
+
" or drag and drop"
|
|
101
|
+
] }),
|
|
102
|
+
/* @__PURE__ */ d("div", { className: l.fileUploadHint, children: [
|
|
103
|
+
"Max file size: ",
|
|
104
|
+
g(r)
|
|
105
|
+
] })
|
|
106
|
+
] })
|
|
118
107
|
]
|
|
119
108
|
}
|
|
120
109
|
);
|
|
121
110
|
};
|
|
122
|
-
|
|
111
|
+
P.displayName = "ChatFileUpload";
|
|
123
112
|
export {
|
|
124
|
-
|
|
113
|
+
P as ChatFileUpload
|
|
125
114
|
};
|
package/dist/index17.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),l=require("react"),tt=require("./index18.cjs"),q=require("lucide-react"),p=require("./index83.cjs"),r=require("./
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),l=require("react"),tt=require("./index18.cjs"),q=require("lucide-react"),p=require("./index83.cjs"),r=require("./index129.cjs"),et=parseInt(p.spacing[6],10),rt=parseInt(p.spacing[4],10),st=parseInt(p.spacing[6],10),lt=parseInt(p.spacing[8],10),T=l.forwardRef(({items:n,variant:_="editorial",aspectRatio:B="16/9",peek:D=!0,autoScroll:R=!1,autoScrollInterval:j=5e3,gap:i="md",align:I="edge",alignOffset:S,showNavigation:$=!0,showPagination:w=!1,onSlideChange:W,renderNavigation:N,highlightActive:y=!1,loop:x=!1,className:z,...H},F)=>{const s=l.useRef(null),[K,J]=l.useState(!1),[Q,U]=l.useState(!0),[f,V]=l.useState(0),M=l.useRef(0),u=l.useCallback(()=>i==="sm"?rt:i==="lg"?lt:st,[i]),d=l.useCallback(t=>{const e=t.children[0];return e?e.offsetWidth:0},[]),v=l.useCallback(()=>{if(!s.current)return;const{scrollLeft:t,scrollWidth:e,clientWidth:c}=s.current,h=d(s.current),g=u(),b=t>=e-c-1,m=t<=1;J(!m),U(!b);let o;if(b)o=n.length-1;else{const L=Math.round(t/(h+g));o=Math.min(Math.max(0,L),n.length-1)}o!==M.current&&(M.current=o,V(o),W?.(o))},[i,n.length,W,u,d]),C=l.useCallback(t=>{if(!s.current)return;const{scrollLeft:e,scrollWidth:c,clientWidth:h}=s.current,g=d(s.current),b=u(),m=g+b,o=e<=1,L=e>=c-h-1;if(x){if(t==="right"&&L){s.current.scrollTo({left:0,behavior:"smooth"});return}if(t==="left"&&o){s.current.scrollTo({left:c-h,behavior:"smooth"});return}}s.current.scrollBy({left:t==="left"?-m:m,behavior:"smooth"})},[i,x,u,d]),k=l.useCallback(t=>{if(!s.current)return;const e=d(s.current),c=u();s.current.scrollTo({left:t*(e+c),behavior:"smooth"})},[u,d]);l.useEffect(()=>{const t=s.current;if(t)return v(),t.addEventListener("scroll",v),()=>{t.removeEventListener("scroll",v)}},[v]),l.useEffect(()=>{if(!R||n.length<=1)return;const t=setInterval(()=>{const e=(f+1)%n.length;k(e)},j);return()=>clearInterval(t)},[R,j,f,n.length,k]);const P=I==="container"&&S!==void 0,E=P?Math.max(0,S-et):0,X=i==="sm"?r.default.gapSm:i==="lg"?r.default.gapLg:r.default.gapMd,Y=I==="container"?r.default.trackContainer:r.default.trackEdge,Z=[r.default.carousel,D&&r.default.peek,y&&r.default.highlightActive,X,z].filter(Boolean).join(" "),O=[r.default.track,Y].filter(Boolean).join(" "),G=x&&n.length>1,A={canScrollLeft:G||K,canScrollRight:G||Q,scrollLeft:()=>C("left"),scrollRight:()=>C("right"),activeIndex:f,totalItems:n.length};return a.jsxs("div",{ref:F,className:Z,...H,children:[a.jsx("div",{ref:s,className:O,style:P?{scrollPaddingInlineStart:S}:void 0,role:"region","aria-label":"Carousel",children:n.map((t,e)=>{const c=e===0,g=e===f&&y;return a.jsx(tt.CarouselCard,{item:t,aspectRatio:B,variant:_,className:g?r.default.cardHighlighted:void 0,style:c&&E>0?{marginLeft:E}:void 0},t.title||e)})}),$&&n.length>1&&(N?N(A):a.jsxs("div",{className:r.default.navigation,children:[a.jsx("button",{type:"button",className:r.default.navButton,onClick:()=>C("left"),disabled:!A.canScrollLeft,"aria-label":"Previous",children:a.jsx(q.ChevronLeft,{size:24})}),a.jsx("button",{type:"button",className:r.default.navButton,onClick:()=>C("right"),disabled:!A.canScrollRight,"aria-label":"Next",children:a.jsx(q.ChevronRight,{size:24})})]})),w&&n.length>1&&a.jsx("div",{className:r.default.pagination,children:n.map((t,e)=>a.jsx("button",{type:"button",className:`${r.default.dot} ${e===f?r.default.dotActive:""}`,onClick:()=>k(e),"aria-label":`Go to slide ${e+1}`},e))})]})});T.displayName="Carousel";exports.Carousel=T;
|
package/dist/index17.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import { forwardRef as et, useRef as j, useState as k, useCallback as f, useEffe
|
|
|
3
3
|
import { CarouselCard as nt } from "./index18.mjs";
|
|
4
4
|
import { ChevronLeft as ot, ChevronRight as st } from "lucide-react";
|
|
5
5
|
import { spacing as b } from "./index83.mjs";
|
|
6
|
-
import e from "./
|
|
6
|
+
import e from "./index129.mjs";
|
|
7
7
|
const lt = parseInt(b[6], 10), ct = parseInt(b[4], 10), at = parseInt(b[6], 10), it = parseInt(b[8], 10), dt = et(
|
|
8
8
|
({
|
|
9
9
|
items: o,
|
package/dist/index170.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("lucide-react"),p=require("./index166.cjs"),P=require("./index167.cjs"),b=require("./index164.cjs"),C=require("./index184.cjs"),t=require("./index158.cjs"),w=d=>{switch(d){case"image":return e.jsx(a.Image,{size:18});case"audio":return e.jsx(a.Music,{size:18});case"code":return e.jsx(a.Code,{size:18});default:return e.jsx(a.FileText,{size:18})}},v=({attachment:d,removable:h=!1,onRemove:i,onClick:n,className:c,...o})=>{const{type:m,name:s,url:l,content:j,language:f,size:x,duration:u,thumbnail:g}=d;switch(m){case"image":if(l)return e.jsxs("div",{className:c,style:{position:"relative"},...o,children:[e.jsx(p.ChatImagePreview,{src:l,alt:s,thumbnail:g,onClick:n}),h&&i&&e.jsx("button",{className:t.default.attachmentPreviewRemove,onClick:r=>{r.stopPropagation(),i()},"aria-label":`Remove ${s}`,style:{position:"absolute",top:4,right:4,background:"var(--surface-base)"},children:e.jsx(a.X,{size:14})})]});break;case"audio":if(l)return e.jsxs("div",{className:c,style:{position:"relative"},...o,children:[e.jsx(P.ChatAudioPlayer,{src:l,duration:u,title:s}),h&&i&&e.jsx("button",{className:t.default.attachmentPreviewRemove,onClick:r=>{r.stopPropagation(),i()},"aria-label":`Remove ${s}`,children:e.jsx(a.X,{size:14})})]});break;case"code":if(j)return e.jsx(b.ChatCodeBlock,{code:j,language:f,className:c,...o});break}return e.jsxs("div",{className:[t.default.attachmentPreview,c].filter(Boolean).join(" "),onClick:n,role:n?"button":void 0,tabIndex:n?0:void 0,...o,children:[e.jsx("div",{className:t.default.attachmentPreviewIcon,children:w(m)}),e.jsxs("div",{className:t.default.attachmentPreviewInfo,children:[e.jsx("span",{className:t.default.attachmentPreviewName,children:s}),x&&e.jsxs("span",{className:t.default.attachmentPreviewMeta,children:[C.formatFileSize(x),u&&` · ${Math.floor(u/60)}:${(u%60).toString().padStart(2,"0")}`]})]}),h&&i&&e.jsx("button",{className:t.default.attachmentPreviewRemove,onClick:r=>{r.stopPropagation(),i()},"aria-label":`Remove ${s}`,children:e.jsx(a.X,{size:14})})]})};v.displayName="ChatAttachment";exports.ChatAttachment=v;
|
package/dist/index170.mjs
CHANGED
|
@@ -1,217 +1,125 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
return a === "today" ? new Intl.DateTimeFormat("en-US", {
|
|
27
|
-
hour: "numeric",
|
|
28
|
-
minute: "2-digit"
|
|
29
|
-
}).format(t) : a === "yesterday" ? "Yesterday" : a === "previous7" ? new Intl.DateTimeFormat("en-US", {
|
|
30
|
-
weekday: "short"
|
|
31
|
-
}).format(t) : new Intl.DateTimeFormat("en-US", {
|
|
32
|
-
month: "short",
|
|
33
|
-
day: "numeric"
|
|
34
|
-
}).format(t);
|
|
35
|
-
}, Q = (t) => {
|
|
36
|
-
const a = /* @__PURE__ */ new Map();
|
|
37
|
-
return N.forEach((o) => a.set(o, [])), t.forEach((o) => {
|
|
38
|
-
const f = B(o.updatedAt);
|
|
39
|
-
a.get(f)?.push(o);
|
|
40
|
-
}), a;
|
|
41
|
-
}, R = ({
|
|
42
|
-
conversations: t = [],
|
|
43
|
-
activeConversationId: a,
|
|
44
|
-
onSelectConversation: o,
|
|
45
|
-
onNewConversation: f,
|
|
46
|
-
onDeleteConversation: d,
|
|
47
|
-
onSearch: g,
|
|
48
|
-
header: j,
|
|
49
|
-
footer: v,
|
|
50
|
-
collapsed: u = !1,
|
|
51
|
-
onCollapsedChange: m,
|
|
52
|
-
className: k,
|
|
53
|
-
...F
|
|
1
|
+
import { jsx as e, jsxs as o } from "react/jsx-runtime";
|
|
2
|
+
import { X as u, FileText as P, Code as w, Music as z, Image as y } from "lucide-react";
|
|
3
|
+
import { ChatImagePreview as C } from "./index166.mjs";
|
|
4
|
+
import { ChatAudioPlayer as N } from "./index167.mjs";
|
|
5
|
+
import { ChatCodeBlock as I } from "./index164.mjs";
|
|
6
|
+
import { formatFileSize as k } from "./index184.mjs";
|
|
7
|
+
import t from "./index158.mjs";
|
|
8
|
+
const x = (d) => {
|
|
9
|
+
switch (d) {
|
|
10
|
+
case "image":
|
|
11
|
+
return /* @__PURE__ */ e(y, { size: 18 });
|
|
12
|
+
case "audio":
|
|
13
|
+
return /* @__PURE__ */ e(z, { size: 18 });
|
|
14
|
+
case "code":
|
|
15
|
+
return /* @__PURE__ */ e(w, { size: 18 });
|
|
16
|
+
default:
|
|
17
|
+
return /* @__PURE__ */ e(P, { size: 18 });
|
|
18
|
+
}
|
|
19
|
+
}, $ = ({
|
|
20
|
+
attachment: d,
|
|
21
|
+
removable: h = !1,
|
|
22
|
+
onRemove: a,
|
|
23
|
+
onClick: n,
|
|
24
|
+
className: s,
|
|
25
|
+
...c
|
|
54
26
|
}) => {
|
|
55
|
-
const
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
if (!h.trim()) return t;
|
|
63
|
-
const s = h.toLowerCase();
|
|
64
|
-
return t.filter(
|
|
65
|
-
(n) => n.title.toLowerCase().includes(s) || n.preview?.toLowerCase().includes(s)
|
|
66
|
-
);
|
|
67
|
-
}, [t, h]), I = S(() => Q(w), [w]), O = y(
|
|
68
|
-
(s) => {
|
|
69
|
-
const n = s.target.value;
|
|
70
|
-
z(n), g?.(n);
|
|
71
|
-
},
|
|
72
|
-
[g]
|
|
73
|
-
), P = y(
|
|
74
|
-
(s) => {
|
|
75
|
-
o?.(s), u && m && m(!0);
|
|
76
|
-
},
|
|
77
|
-
[o, u, m]
|
|
78
|
-
), E = y(
|
|
79
|
-
(s, n) => {
|
|
80
|
-
s.stopPropagation(), p === n ? (d?.(n), b(null), c.current && clearTimeout(c.current)) : (b(n), c.current && clearTimeout(c.current), c.current = setTimeout(() => {
|
|
81
|
-
b(null);
|
|
82
|
-
}, 3e3));
|
|
83
|
-
},
|
|
84
|
-
[p, d]
|
|
85
|
-
), L = N.some(
|
|
86
|
-
(s) => (I.get(s)?.length ?? 0) > 0
|
|
87
|
-
);
|
|
88
|
-
return /* @__PURE__ */ l(C, { children: [
|
|
89
|
-
!u && /* @__PURE__ */ r(
|
|
90
|
-
"div",
|
|
91
|
-
{
|
|
92
|
-
className: e.sidebarOverlay,
|
|
93
|
-
onClick: () => m?.(!0),
|
|
94
|
-
"aria-hidden": "true"
|
|
95
|
-
}
|
|
96
|
-
),
|
|
97
|
-
/* @__PURE__ */ l(
|
|
98
|
-
"aside",
|
|
99
|
-
{
|
|
100
|
-
className: [
|
|
101
|
-
e.sidebar,
|
|
102
|
-
u && e.sidebarCollapsed,
|
|
103
|
-
!u && e.sidebarOpen,
|
|
104
|
-
k
|
|
105
|
-
].filter(Boolean).join(" "),
|
|
106
|
-
...F,
|
|
107
|
-
children: [
|
|
108
|
-
/* @__PURE__ */ r("div", { className: e.sidebarHeader, children: j || /* @__PURE__ */ l(C, { children: [
|
|
109
|
-
/* @__PURE__ */ r(
|
|
110
|
-
"button",
|
|
111
|
-
{
|
|
112
|
-
className: [
|
|
113
|
-
e.inputButton,
|
|
114
|
-
e.inputButtonPrimary,
|
|
115
|
-
e.sidebarNewButton
|
|
116
|
-
].filter(Boolean).join(" "),
|
|
117
|
-
onClick: f,
|
|
118
|
-
"aria-label": "New conversation",
|
|
119
|
-
children: /* @__PURE__ */ l("span", { className: e.sidebarNewButtonInner, children: [
|
|
120
|
-
/* @__PURE__ */ r(A, { size: 18 }),
|
|
121
|
-
/* @__PURE__ */ r("span", { children: "New Chat" })
|
|
122
|
-
] })
|
|
123
|
-
}
|
|
124
|
-
),
|
|
125
|
-
/* @__PURE__ */ r(
|
|
126
|
-
"button",
|
|
127
|
-
{
|
|
128
|
-
className: [e.inputButton, e.sidebarCloseButton].join(
|
|
129
|
-
" "
|
|
130
|
-
),
|
|
131
|
-
onClick: () => m?.(!0),
|
|
132
|
-
"aria-label": "Close sidebar",
|
|
133
|
-
children: /* @__PURE__ */ r(U, { size: 20 })
|
|
134
|
-
}
|
|
135
|
-
)
|
|
136
|
-
] }) }),
|
|
137
|
-
/* @__PURE__ */ r("div", { className: e.sidebarSearch, children: /* @__PURE__ */ l("div", { className: e.sidebarSearchWrapper, children: [
|
|
138
|
-
/* @__PURE__ */ r($, { size: 16, className: e.sidebarSearchIcon }),
|
|
139
|
-
/* @__PURE__ */ r(
|
|
140
|
-
"input",
|
|
141
|
-
{
|
|
142
|
-
type: "search",
|
|
143
|
-
className: [
|
|
144
|
-
e.sidebarSearchInput,
|
|
145
|
-
e.sidebarSearchInputWithIcon
|
|
146
|
-
].join(" "),
|
|
147
|
-
placeholder: "Search conversations...",
|
|
148
|
-
value: h,
|
|
149
|
-
onChange: O,
|
|
150
|
-
"aria-label": "Search conversations"
|
|
151
|
-
}
|
|
152
|
-
)
|
|
153
|
-
] }) }),
|
|
154
|
-
/* @__PURE__ */ r(
|
|
155
|
-
"div",
|
|
27
|
+
const { type: p, name: i, url: l, content: v, language: b, size: f, duration: m, thumbnail: g } = d;
|
|
28
|
+
switch (p) {
|
|
29
|
+
case "image":
|
|
30
|
+
if (l)
|
|
31
|
+
return /* @__PURE__ */ o("div", { className: s, style: { position: "relative" }, ...c, children: [
|
|
32
|
+
/* @__PURE__ */ e(
|
|
33
|
+
C,
|
|
156
34
|
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
const n = I.get(s) ?? [];
|
|
162
|
-
return n.length === 0 ? null : /* @__PURE__ */ l("div", { children: [
|
|
163
|
-
/* @__PURE__ */ r("div", { className: e.sidebarGroupHeader, children: G[s] }),
|
|
164
|
-
n.map((i) => /* @__PURE__ */ l(
|
|
165
|
-
"button",
|
|
166
|
-
{
|
|
167
|
-
className: [
|
|
168
|
-
e.sidebarItem,
|
|
169
|
-
i.id === a && e.sidebarItemActive
|
|
170
|
-
].filter(Boolean).join(" "),
|
|
171
|
-
onClick: () => P(i.id),
|
|
172
|
-
role: "listitem",
|
|
173
|
-
"aria-selected": i.id === a,
|
|
174
|
-
"aria-label": `Conversation: ${i.title}`,
|
|
175
|
-
children: [
|
|
176
|
-
/* @__PURE__ */ r(
|
|
177
|
-
T,
|
|
178
|
-
{
|
|
179
|
-
size: 18,
|
|
180
|
-
className: e.sidebarItemIcon
|
|
181
|
-
}
|
|
182
|
-
),
|
|
183
|
-
/* @__PURE__ */ l("div", { className: e.sidebarItemContent, children: [
|
|
184
|
-
/* @__PURE__ */ r("span", { className: e.sidebarItemTitle, children: i.title }),
|
|
185
|
-
i.preview && /* @__PURE__ */ r("span", { className: e.sidebarItemPreview, children: i.preview })
|
|
186
|
-
] }),
|
|
187
|
-
/* @__PURE__ */ r("span", { className: e.sidebarItemDate, children: H(i.updatedAt) }),
|
|
188
|
-
d && /* @__PURE__ */ r(
|
|
189
|
-
"button",
|
|
190
|
-
{
|
|
191
|
-
className: e.sidebarItemDelete,
|
|
192
|
-
onClick: (M) => E(M, i.id),
|
|
193
|
-
"aria-label": p === i.id ? `Confirm delete ${i.title}` : `Delete ${i.title}`,
|
|
194
|
-
children: p === i.id ? /* @__PURE__ */ r("span", { className: e.sidebarItemDeleteConfirm, children: "Delete?" }) : /* @__PURE__ */ r(q, { size: 16 })
|
|
195
|
-
}
|
|
196
|
-
)
|
|
197
|
-
]
|
|
198
|
-
},
|
|
199
|
-
i.id
|
|
200
|
-
))
|
|
201
|
-
] }, s);
|
|
202
|
-
}) : /* @__PURE__ */ l("div", { className: e.sidebarEmpty, children: [
|
|
203
|
-
/* @__PURE__ */ r(T, { size: 32, className: e.sidebarEmptyIcon }),
|
|
204
|
-
/* @__PURE__ */ r("p", { children: h ? "No conversations found" : "No conversations yet" })
|
|
205
|
-
] })
|
|
35
|
+
src: l,
|
|
36
|
+
alt: i,
|
|
37
|
+
thumbnail: g,
|
|
38
|
+
onClick: n
|
|
206
39
|
}
|
|
207
40
|
),
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
41
|
+
h && a && /* @__PURE__ */ e(
|
|
42
|
+
"button",
|
|
43
|
+
{
|
|
44
|
+
className: t.attachmentPreviewRemove,
|
|
45
|
+
onClick: (r) => {
|
|
46
|
+
r.stopPropagation(), a();
|
|
47
|
+
},
|
|
48
|
+
"aria-label": `Remove ${i}`,
|
|
49
|
+
style: {
|
|
50
|
+
position: "absolute",
|
|
51
|
+
top: 4,
|
|
52
|
+
right: 4,
|
|
53
|
+
background: "var(--surface-base)"
|
|
54
|
+
},
|
|
55
|
+
children: /* @__PURE__ */ e(u, { size: 14 })
|
|
56
|
+
}
|
|
57
|
+
)
|
|
58
|
+
] });
|
|
59
|
+
break;
|
|
60
|
+
case "audio":
|
|
61
|
+
if (l)
|
|
62
|
+
return /* @__PURE__ */ o("div", { className: s, style: { position: "relative" }, ...c, children: [
|
|
63
|
+
/* @__PURE__ */ e(N, { src: l, duration: m, title: i }),
|
|
64
|
+
h && a && /* @__PURE__ */ e(
|
|
65
|
+
"button",
|
|
66
|
+
{
|
|
67
|
+
className: t.attachmentPreviewRemove,
|
|
68
|
+
onClick: (r) => {
|
|
69
|
+
r.stopPropagation(), a();
|
|
70
|
+
},
|
|
71
|
+
"aria-label": `Remove ${i}`,
|
|
72
|
+
children: /* @__PURE__ */ e(u, { size: 14 })
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
] });
|
|
76
|
+
break;
|
|
77
|
+
case "code":
|
|
78
|
+
if (v)
|
|
79
|
+
return /* @__PURE__ */ e(
|
|
80
|
+
I,
|
|
81
|
+
{
|
|
82
|
+
code: v,
|
|
83
|
+
language: b,
|
|
84
|
+
className: s,
|
|
85
|
+
...c
|
|
86
|
+
}
|
|
87
|
+
);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
return /* @__PURE__ */ o(
|
|
91
|
+
"div",
|
|
92
|
+
{
|
|
93
|
+
className: [t.attachmentPreview, s].filter(Boolean).join(" "),
|
|
94
|
+
onClick: n,
|
|
95
|
+
role: n ? "button" : void 0,
|
|
96
|
+
tabIndex: n ? 0 : void 0,
|
|
97
|
+
...c,
|
|
98
|
+
children: [
|
|
99
|
+
/* @__PURE__ */ e("div", { className: t.attachmentPreviewIcon, children: x(p) }),
|
|
100
|
+
/* @__PURE__ */ o("div", { className: t.attachmentPreviewInfo, children: [
|
|
101
|
+
/* @__PURE__ */ e("span", { className: t.attachmentPreviewName, children: i }),
|
|
102
|
+
f && /* @__PURE__ */ o("span", { className: t.attachmentPreviewMeta, children: [
|
|
103
|
+
k(f),
|
|
104
|
+
m && ` · ${Math.floor(m / 60)}:${(m % 60).toString().padStart(2, "0")}`
|
|
105
|
+
] })
|
|
106
|
+
] }),
|
|
107
|
+
h && a && /* @__PURE__ */ e(
|
|
108
|
+
"button",
|
|
109
|
+
{
|
|
110
|
+
className: t.attachmentPreviewRemove,
|
|
111
|
+
onClick: (r) => {
|
|
112
|
+
r.stopPropagation(), a();
|
|
113
|
+
},
|
|
114
|
+
"aria-label": `Remove ${i}`,
|
|
115
|
+
children: /* @__PURE__ */ e(u, { size: 14 })
|
|
116
|
+
}
|
|
117
|
+
)
|
|
118
|
+
]
|
|
119
|
+
}
|
|
120
|
+
);
|
|
213
121
|
};
|
|
214
|
-
|
|
122
|
+
$.displayName = "ChatAttachment";
|
|
215
123
|
export {
|
|
216
|
-
|
|
124
|
+
$ as ChatAttachment
|
|
217
125
|
};
|
package/dist/index171.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),d=require("react"),c=require("lucide-react"),t=require("./index158.cjs"),O={today:"Today",yesterday:"Yesterday",previous7:"Previous 7 days",previous30:"Previous 30 days",older:"Older"},y=["today","yesterday","previous7","previous30","older"],C=a=>{const r=new Date,u=(new Date(r.getFullYear(),r.getMonth(),r.getDate()).getTime()-new Date(a.getFullYear(),a.getMonth(),a.getDate()).getTime())/(1e3*60*60*24);return u<1?"today":u<2?"yesterday":u<7?"previous7":u<30?"previous30":"older"},P=a=>{const r=C(a);return r==="today"?new Intl.DateTimeFormat("en-US",{hour:"numeric",minute:"2-digit"}).format(a):r==="yesterday"?"Yesterday":r==="previous7"?new Intl.DateTimeFormat("en-US",{weekday:"short"}).format(a):new Intl.DateTimeFormat("en-US",{month:"short",day:"numeric"}).format(a)},z=a=>{const r=new Map;return y.forEach(n=>r.set(n,[])),a.forEach(n=>{const b=C(n.updatedAt);r.get(b)?.push(n)}),r},S=({conversations:a=[],activeConversationId:r,onSelectConversation:n,onNewConversation:b,onDeleteConversation:u,onSearch:x,header:w,footer:N,collapsed:m=!1,onCollapsedChange:f,className:I,...D})=>{const[h,T]=d.useState(""),[p,j]=d.useState(null),o=d.useRef(void 0);d.useEffect(()=>()=>{o.current&&clearTimeout(o.current)},[]);const g=d.useMemo(()=>{if(!h.trim())return a;const s=h.toLowerCase();return a.filter(l=>l.title.toLowerCase().includes(s)||l.preview?.toLowerCase().includes(s))},[a,h]),v=d.useMemo(()=>z(g),[g]),B=d.useCallback(s=>{const l=s.target.value;T(l),x?.(l)},[x]),k=d.useCallback(s=>{n?.(s),m&&f&&f(!0)},[n,m,f]),F=d.useCallback((s,l)=>{s.stopPropagation(),p===l?(u?.(l),j(null),o.current&&clearTimeout(o.current)):(j(l),o.current&&clearTimeout(o.current),o.current=setTimeout(()=>{j(null)},3e3))},[p,u]),M=y.some(s=>(v.get(s)?.length??0)>0);return e.jsxs(e.Fragment,{children:[!m&&e.jsx("div",{className:t.default.sidebarOverlay,onClick:()=>f?.(!0),"aria-hidden":"true"}),e.jsxs("aside",{className:[t.default.sidebar,m&&t.default.sidebarCollapsed,!m&&t.default.sidebarOpen,I].filter(Boolean).join(" "),...D,children:[e.jsx("div",{className:t.default.sidebarHeader,children:w||e.jsxs(e.Fragment,{children:[e.jsx("button",{className:[t.default.inputButton,t.default.inputButtonPrimary,t.default.sidebarNewButton].filter(Boolean).join(" "),onClick:b,"aria-label":"New conversation",children:e.jsxs("span",{className:t.default.sidebarNewButtonInner,children:[e.jsx(c.Plus,{size:18}),e.jsx("span",{children:"New Chat"})]})}),e.jsx("button",{className:[t.default.inputButton,t.default.sidebarCloseButton].join(" "),onClick:()=>f?.(!0),"aria-label":"Close sidebar",children:e.jsx(c.X,{size:20})})]})}),e.jsx("div",{className:t.default.sidebarSearch,children:e.jsxs("div",{className:t.default.sidebarSearchWrapper,children:[e.jsx(c.Search,{size:16,className:t.default.sidebarSearchIcon}),e.jsx("input",{type:"search",className:[t.default.sidebarSearchInput,t.default.sidebarSearchInputWithIcon].join(" "),placeholder:"Search conversations...",value:h,onChange:B,"aria-label":"Search conversations"})]})}),e.jsx("div",{className:t.default.sidebarList,role:"list","aria-label":"Conversations",children:M?y.map(s=>{const l=v.get(s)??[];return l.length===0?null:e.jsxs("div",{children:[e.jsx("div",{className:t.default.sidebarGroupHeader,children:O[s]}),l.map(i=>e.jsxs("button",{className:[t.default.sidebarItem,i.id===r&&t.default.sidebarItemActive].filter(Boolean).join(" "),onClick:()=>k(i.id),role:"listitem","aria-selected":i.id===r,"aria-label":`Conversation: ${i.title}`,children:[e.jsx(c.MessageSquare,{size:18,className:t.default.sidebarItemIcon}),e.jsxs("div",{className:t.default.sidebarItemContent,children:[e.jsx("span",{className:t.default.sidebarItemTitle,children:i.title}),i.preview&&e.jsx("span",{className:t.default.sidebarItemPreview,children:i.preview})]}),e.jsx("span",{className:t.default.sidebarItemDate,children:P(i.updatedAt)}),u&&e.jsx("button",{className:t.default.sidebarItemDelete,onClick:q=>F(q,i.id),"aria-label":p===i.id?`Confirm delete ${i.title}`:`Delete ${i.title}`,children:p===i.id?e.jsx("span",{className:t.default.sidebarItemDeleteConfirm,children:"Delete?"}):e.jsx(c.Trash2,{size:16})})]},i.id))]},s)}):e.jsxs("div",{className:t.default.sidebarEmpty,children:[e.jsx(c.MessageSquare,{size:32,className:t.default.sidebarEmptyIcon}),e.jsx("p",{children:h?"No conversations found":"No conversations yet"})]})}),N&&e.jsx("div",{className:t.default.sidebarFooter,children:N})]})]})};S.displayName="ChatSidebar";exports.ChatSidebar=S;
|