@orion-ds/react 4.2.5 → 4.2.9
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/components/Accordion/Accordion.module.css +1 -1
- package/dist/components/Alert/Alert.d.ts.map +1 -1
- package/dist/components/Alert/Alert.module.css +1 -1
- package/dist/components/Alert/Alert.stories.d.ts +2 -1
- package/dist/components/Alert/Alert.stories.d.ts.map +1 -1
- package/dist/components/Alert/Alert.types.d.ts +1 -1
- package/dist/components/Alert/Alert.types.d.ts.map +1 -1
- package/dist/components/Badge/Badge.module.css +1 -1
- package/dist/components/Badge/Badge.stories.d.ts +2 -2
- package/dist/components/Badge/Badge.stories.d.ts.map +1 -1
- package/dist/components/Badge/Badge.types.d.ts +2 -2
- package/dist/components/Badge/Badge.types.d.ts.map +1 -1
- package/dist/components/Button/Button.module.css +1 -1
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.module.css +1 -1
- package/dist/components/Card/Card.stories.d.ts +1 -1
- package/dist/components/Card/Card.stories.d.ts.map +1 -1
- package/dist/components/Card/Card.types.d.ts +3 -1
- package/dist/components/Card/Card.types.d.ts.map +1 -1
- package/dist/components/Chip/Chip.module.css +1 -1
- package/dist/components/Chip/Chip.stories.d.ts +1 -1
- package/dist/components/Chip/Chip.stories.d.ts.map +1 -1
- package/dist/components/Chip/Chip.types.d.ts +1 -1
- package/dist/components/Chip/Chip.types.d.ts.map +1 -1
- package/dist/components/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/dist/components/CodeEditor/CodeEditor.types.d.ts.map +1 -1
- package/dist/components/Field/Field.module.css +1 -1
- package/dist/components/Field/Field.stories.d.ts +5 -0
- package/dist/components/Field/Field.stories.d.ts.map +1 -1
- package/dist/components/NavTree/NavTree.d.ts.map +1 -1
- package/dist/components/NavTree/NavTree.module.css +1 -1
- package/dist/components/NavTree/NavTree.stories.d.ts.map +1 -1
- package/dist/components/NavTree/NavTree.types.d.ts +2 -2
- package/dist/components/SearchInput/SearchInput.d.ts.map +1 -1
- package/dist/components/SearchInput/SearchInput.module.css +1 -1
- package/dist/components/SearchInput/SearchInput.stories.d.ts +1 -0
- package/dist/components/SearchInput/SearchInput.stories.d.ts.map +1 -1
- package/dist/components/SearchInput/SearchInput.types.d.ts +5 -1
- package/dist/components/SearchInput/SearchInput.types.d.ts.map +1 -1
- package/dist/components/Select/Select.module.css +1 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.module.css +1 -1
- package/dist/components/Tabs/Tabs.types.d.ts +6 -0
- package/dist/components/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.module.css +1 -1
- package/dist/components/UserMenu/UserMenu.d.ts.map +1 -1
- package/dist/components/WorkspaceSwitcher/WorkspaceSwitcher.d.ts.map +1 -1
- package/dist/components/WorkspaceSwitcher/WorkspaceSwitcher.types.d.ts.map +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/examples/LandingPage.example.d.ts.map +1 -1
- package/dist/hooks/useTheme.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index10.cjs +1 -1
- package/dist/index10.mjs +1 -1
- package/dist/index100.cjs +1 -1
- package/dist/index100.mjs +62 -24
- package/dist/index101.cjs +1 -1
- package/dist/index101.mjs +16 -44
- package/dist/index102.cjs +1 -1
- package/dist/index102.mjs +30 -30
- package/dist/index103.cjs +1 -1
- package/dist/index103.mjs +30 -28
- package/dist/index104.cjs +1 -1
- package/dist/index104.mjs +40 -16
- package/dist/index105.cjs +1 -1
- package/dist/index105.mjs +36 -64
- package/dist/index106.cjs +1 -1
- package/dist/index106.mjs +54 -52
- package/dist/index107.cjs +1 -1
- package/dist/index107.mjs +46 -42
- package/dist/index108.cjs +1 -1
- package/dist/index108.mjs +13 -29
- package/dist/index109.cjs +1 -1
- package/dist/index109.mjs +28 -24
- package/dist/index11.cjs +1 -1
- package/dist/index11.mjs +1 -1
- package/dist/index110.cjs +1 -1
- package/dist/index110.mjs +65 -28
- package/dist/index111.cjs +1 -1
- package/dist/index111.mjs +24 -18
- package/dist/index112.cjs +1 -1
- package/dist/index112.mjs +35 -14
- package/dist/index113.cjs +1 -1
- package/dist/index113.mjs +30 -50
- package/dist/index114.cjs +1 -1
- package/dist/index114.mjs +32 -53
- package/dist/index115.cjs +1 -1
- package/dist/index115.mjs +57 -62
- package/dist/index116.cjs +1 -1
- package/dist/index116.mjs +18 -33
- package/dist/index117.cjs +1 -1
- package/dist/index117.mjs +12 -30
- package/dist/index118.cjs +1 -1
- package/dist/index118.mjs +64 -18
- package/dist/index119.cjs +1 -1
- package/dist/index119.mjs +28 -56
- package/dist/index12.cjs +1 -1
- package/dist/index12.mjs +1 -1
- package/dist/index120.cjs +1 -1
- package/dist/index120.mjs +32 -38
- package/dist/index121.cjs +1 -1
- package/dist/index121.mjs +76 -20
- package/dist/index122.cjs +1 -1
- package/dist/index122.mjs +33 -40
- package/dist/index123.cjs +1 -1
- package/dist/index123.mjs +40 -76
- package/dist/index124.cjs +1 -1
- package/dist/index124.mjs +52 -51
- package/dist/index125.cjs +1 -1
- package/dist/index125.mjs +41 -29
- package/dist/index126.cjs +1 -1
- package/dist/index126.mjs +18 -65
- package/dist/index127.cjs +1 -1
- package/dist/index127.mjs +37 -31
- package/dist/index128.cjs +1 -1
- package/dist/index128.mjs +28 -32
- package/dist/index129.cjs +1 -1
- package/dist/index129.mjs +36 -45
- package/dist/index13.cjs +1 -1
- package/dist/index13.mjs +1 -1
- package/dist/index130.cjs +1 -1
- package/dist/index130.mjs +18 -42
- package/dist/index131.cjs +1 -1
- package/dist/index131.mjs +18 -28
- package/dist/index132.cjs +1 -1
- package/dist/index132.mjs +234 -30
- package/dist/index133.cjs +1 -1
- package/dist/index133.mjs +34 -25
- package/dist/index134.cjs +1 -1
- package/dist/index134.mjs +44 -13
- package/dist/index135.cjs +1 -1
- package/dist/index135.mjs +170 -234
- package/dist/index136.cjs +1 -1
- package/dist/index136.mjs +184 -32
- package/dist/index137.cjs +1 -1
- package/dist/index137.mjs +24 -39
- package/dist/index138.cjs +1 -1
- package/dist/index138.mjs +78 -158
- package/dist/index139.cjs +1 -1
- package/dist/index139.mjs +47 -180
- package/dist/index14.cjs +1 -1
- package/dist/index14.mjs +1 -1
- package/dist/index140.cjs +1 -1
- package/dist/index140.mjs +64 -26
- package/dist/index141.cjs +1 -1
- package/dist/index141.mjs +115 -81
- package/dist/index142.cjs +1 -1
- package/dist/index142.mjs +108 -52
- package/dist/index143.cjs +1 -1
- package/dist/index143.mjs +105 -60
- package/dist/index144.cjs +1 -1
- package/dist/index144.mjs +112 -114
- package/dist/index145.cjs +1 -1
- package/dist/index145.mjs +212 -106
- package/dist/index146.cjs +1 -1
- package/dist/index146.mjs +42 -111
- package/dist/index147.cjs +1 -1
- package/dist/index147.mjs +27 -122
- package/dist/index148.cjs +1 -1
- package/dist/index148.mjs +56 -214
- package/dist/index149.cjs +1 -1
- package/dist/index149.mjs +46 -22
- package/dist/index15.cjs +1 -1
- package/dist/index15.mjs +1 -1
- package/dist/index150.cjs +1 -1
- package/dist/index150.mjs +24 -36
- package/dist/index151.cjs +1 -1
- package/dist/index151.mjs +24 -12
- package/dist/index152.cjs +1 -1
- package/dist/index152.mjs +20 -28
- package/dist/index153.cjs +1 -1
- package/dist/index153.mjs +26 -46
- package/dist/index154.cjs +1 -1
- package/dist/index154.mjs +28 -38
- package/dist/index155.cjs +1 -1
- package/dist/index155.mjs +40 -36
- package/dist/index156.cjs +1 -1
- package/dist/index156.mjs +22 -18
- package/dist/index157.cjs +1 -1
- package/dist/index157.mjs +64 -62
- package/dist/index158.cjs +1 -1
- package/dist/index158.mjs +12 -18
- package/dist/index159.cjs +1 -1
- package/dist/index159.mjs +33 -67
- package/dist/index16.cjs +1 -1
- package/dist/index16.mjs +73 -69
- package/dist/index160.cjs +1 -1
- package/dist/index160.mjs +20 -20
- package/dist/index161.cjs +1 -1
- package/dist/index161.mjs +42 -106
- package/dist/index162.cjs +1 -1
- package/dist/index162.mjs +20 -33
- package/dist/index163.cjs +1 -1
- package/dist/index163.mjs +28 -28
- package/dist/index164.cjs +1 -1
- package/dist/index164.mjs +44 -18
- package/dist/index165.cjs +1 -1
- package/dist/index165.mjs +63 -37
- package/dist/index166.cjs +1 -1
- package/dist/index166.mjs +28 -28
- package/dist/index167.cjs +1 -1
- package/dist/index167.mjs +20 -46
- package/dist/index168.cjs +1 -1
- package/dist/index168.mjs +67 -22
- package/dist/index169.cjs +1 -1
- package/dist/index169.mjs +30 -40
- package/dist/index17.cjs +1 -1
- package/dist/index17.mjs +1 -1
- package/dist/index170.cjs +1 -1
- package/dist/index170.mjs +24 -20
- package/dist/index171.cjs +1 -1
- package/dist/index171.mjs +44 -42
- package/dist/index172.cjs +1 -1
- package/dist/index172.mjs +46 -64
- package/dist/index173.cjs +1 -1
- package/dist/index173.mjs +28 -55
- package/dist/index174.cjs +1 -1
- package/dist/index174.mjs +106 -26
- package/dist/index175.cjs +1 -1
- package/dist/index175.mjs +52 -44
- package/dist/index176.cjs +1 -1
- package/dist/index176.mjs +45 -28
- package/dist/index177.cjs +1 -1
- package/dist/index177.mjs +38 -33
- package/dist/index178.cjs +1 -1
- package/dist/index178.mjs +55 -32
- package/dist/index179.cjs +1 -1
- package/dist/index179.mjs +50 -46
- package/dist/index18.cjs +1 -1
- package/dist/index18.mjs +1 -1
- package/dist/index180.cjs +1 -1
- package/dist/index180.mjs +30 -57
- package/dist/index181.cjs +1 -1
- package/dist/index181.mjs +52 -27
- package/dist/index182.cjs +1 -1
- package/dist/index182.mjs +17 -17
- package/dist/index183.cjs +1 -1
- package/dist/index183.mjs +17 -17
- 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/index21.cjs +1 -1
- package/dist/index21.mjs +1 -1
- package/dist/index22.cjs +1 -1
- package/dist/index22.mjs +1 -1
- package/dist/index23.cjs +1 -1
- package/dist/index23.mjs +56 -36
- package/dist/index24.cjs +1 -1
- package/dist/index24.mjs +1 -1
- package/dist/index25.cjs +1 -1
- package/dist/index25.mjs +2 -2
- package/dist/index26.cjs +1 -1
- package/dist/index26.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/index29.cjs +1 -1
- package/dist/index29.mjs +1 -1
- package/dist/index3.cjs +1 -1
- package/dist/index3.mjs +2 -2
- 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/index48.mjs +95 -31
- 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 +82 -78
- 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 +42 -39
- package/dist/index63.cjs +1 -1
- package/dist/index63.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/index68.cjs +1 -1
- package/dist/index68.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 +17 -15
- package/dist/index73.cjs +1 -1
- package/dist/index73.mjs +1 -1
- package/dist/index74.cjs +1 -1
- package/dist/index74.mjs +2 -2
- 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 +31 -30
- package/dist/index80.cjs +1 -1
- package/dist/index80.mjs +1 -1
- package/dist/index81.cjs +1 -1
- package/dist/index81.mjs +21 -3
- package/dist/index9.cjs +1 -1
- package/dist/index9.mjs +1 -1
- package/dist/index94.mjs +3 -1
- package/dist/index99.cjs +1 -1
- package/dist/index99.mjs +30 -40
- package/dist/styles.css +13 -12
- package/dist/theme.css +1 -0
- package/dist/tokens/brands.d.ts.map +1 -1
- package/package.json +4 -4
package/dist/index142.mjs
CHANGED
|
@@ -1,55 +1,111 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
)
|
|
1
|
+
import { jsx as r, jsxs as c } from "react/jsx-runtime";
|
|
2
|
+
import { X as t, Square as b, Send as C, Mic as j } from "lucide-react";
|
|
3
|
+
import { useVoiceRecorder as S } from "./index95.mjs";
|
|
4
|
+
import { formatTime as k } from "./index184.mjs";
|
|
5
|
+
import e from "./index132.mjs";
|
|
6
|
+
const z = ({
|
|
7
|
+
onRecordingComplete: d,
|
|
8
|
+
onCancel: v,
|
|
9
|
+
maxDuration: m = 300,
|
|
10
|
+
className: a,
|
|
11
|
+
...n
|
|
12
|
+
}) => {
|
|
13
|
+
const {
|
|
14
|
+
isRecording: o,
|
|
15
|
+
duration: R,
|
|
16
|
+
audioBlob: i,
|
|
17
|
+
error: s,
|
|
18
|
+
startRecording: h,
|
|
19
|
+
stopRecording: u,
|
|
20
|
+
cancelRecording: N,
|
|
21
|
+
reset: l,
|
|
22
|
+
isSupported: f
|
|
23
|
+
} = S({
|
|
24
|
+
maxDuration: m,
|
|
25
|
+
onRecordingComplete: d,
|
|
26
|
+
onError: (g) => console.error("Recording error:", g)
|
|
27
|
+
}), p = () => {
|
|
28
|
+
o ? u() : i ? (d?.(i), l()) : h();
|
|
29
|
+
}, B = () => {
|
|
30
|
+
N(), v?.();
|
|
31
|
+
};
|
|
32
|
+
return f ? s ? /* @__PURE__ */ c(
|
|
33
|
+
"div",
|
|
34
|
+
{
|
|
35
|
+
className: [e.voiceRecorder, a].filter(Boolean).join(" "),
|
|
36
|
+
...n,
|
|
37
|
+
children: [
|
|
38
|
+
/* @__PURE__ */ r("div", { className: e.voiceRecorderInfo, children: /* @__PURE__ */ r(
|
|
39
|
+
"span",
|
|
40
|
+
{
|
|
41
|
+
className: [
|
|
42
|
+
e.voiceRecorderLabel,
|
|
43
|
+
e.voiceRecorderError
|
|
44
|
+
].join(" "),
|
|
45
|
+
children: s
|
|
45
46
|
}
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
47
|
+
) }),
|
|
48
|
+
/* @__PURE__ */ r(
|
|
49
|
+
"button",
|
|
50
|
+
{
|
|
51
|
+
className: e.inputButton,
|
|
52
|
+
onClick: l,
|
|
53
|
+
"aria-label": "Try again",
|
|
54
|
+
children: /* @__PURE__ */ r(t, { size: 20 })
|
|
55
|
+
}
|
|
56
|
+
)
|
|
57
|
+
]
|
|
58
|
+
}
|
|
59
|
+
) : /* @__PURE__ */ c(
|
|
60
|
+
"div",
|
|
61
|
+
{
|
|
62
|
+
className: [e.voiceRecorder, a].filter(Boolean).join(" "),
|
|
63
|
+
...n,
|
|
64
|
+
children: [
|
|
65
|
+
/* @__PURE__ */ r(
|
|
66
|
+
"button",
|
|
67
|
+
{
|
|
68
|
+
className: [
|
|
69
|
+
e.voiceRecorderButton,
|
|
70
|
+
!o && !i && e.voiceRecorderButtonIdle
|
|
71
|
+
].filter(Boolean).join(" "),
|
|
72
|
+
onClick: p,
|
|
73
|
+
"aria-label": o ? "Stop recording" : i ? "Send recording" : "Start recording",
|
|
74
|
+
children: o ? /* @__PURE__ */ r(b, { size: 20 }) : i ? /* @__PURE__ */ r(C, { size: 20 }) : /* @__PURE__ */ r(j, { size: 20 })
|
|
75
|
+
}
|
|
76
|
+
),
|
|
77
|
+
/* @__PURE__ */ c("div", { className: e.voiceRecorderInfo, children: [
|
|
78
|
+
/* @__PURE__ */ r("span", { className: e.voiceRecorderDuration, children: k(R) }),
|
|
79
|
+
/* @__PURE__ */ r("span", { className: e.voiceRecorderLabel, children: o ? "Recording..." : i ? "Recording ready" : "Click to record" })
|
|
80
|
+
] }),
|
|
81
|
+
o && /* @__PURE__ */ c("div", { className: e.voiceRecorderWaveform, children: [
|
|
82
|
+
/* @__PURE__ */ r("div", { className: e.voiceRecorderBar }),
|
|
83
|
+
/* @__PURE__ */ r("div", { className: e.voiceRecorderBar }),
|
|
84
|
+
/* @__PURE__ */ r("div", { className: e.voiceRecorderBar }),
|
|
85
|
+
/* @__PURE__ */ r("div", { className: e.voiceRecorderBar }),
|
|
86
|
+
/* @__PURE__ */ r("div", { className: e.voiceRecorderBar })
|
|
87
|
+
] }),
|
|
88
|
+
(o || i) && /* @__PURE__ */ r("div", { className: e.voiceRecorderActions, children: /* @__PURE__ */ r(
|
|
89
|
+
"button",
|
|
90
|
+
{
|
|
91
|
+
className: e.inputButton,
|
|
92
|
+
onClick: B,
|
|
93
|
+
"aria-label": "Cancel recording",
|
|
94
|
+
children: /* @__PURE__ */ r(t, { size: 20 })
|
|
95
|
+
}
|
|
96
|
+
) })
|
|
97
|
+
]
|
|
98
|
+
}
|
|
99
|
+
) : /* @__PURE__ */ r(
|
|
100
|
+
"div",
|
|
101
|
+
{
|
|
102
|
+
className: [e.voiceRecorder, a].filter(Boolean).join(" "),
|
|
103
|
+
...n,
|
|
104
|
+
children: /* @__PURE__ */ r("div", { className: e.voiceRecorderInfo, children: /* @__PURE__ */ r("span", { className: e.voiceRecorderLabel, children: "Voice recording is not supported in this browser" }) })
|
|
105
|
+
}
|
|
106
|
+
);
|
|
107
|
+
};
|
|
108
|
+
z.displayName = "ChatVoiceRecorder";
|
|
53
109
|
export {
|
|
54
|
-
|
|
110
|
+
z as ChatVoiceRecorder
|
|
55
111
|
};
|
package/dist/index143.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),t=require("react"),R=require("lucide-react"),h=require("./index184.cjs"),o=require("./index132.cjs"),g=({onFilesSelected:f,accept:i=["*/*"],multiple:C=!0,maxSize:s=10*1024*1024,children:v,className:D,...k})=>{const[m,u]=t.useState(!1),c=t.useRef(null),d=t.useCallback(e=>{if(!e||e.length===0)return;const r=[];Array.from(e).forEach(l=>{if(s&&l.size>s){console.warn(`File ${l.name} exceeds max size of ${h.formatFileSize(s)}`);return}const F=i.includes("*/*"),q=i.flatMap(n=>(n.endsWith("/*"),n));if(!(F||q.some(n=>{if(n.endsWith("/*")){const N=n.split("/")[0];return l.type.startsWith(`${N}/`)}return l.type===n||l.name.endsWith(n)}))){console.warn(`File ${l.name} type not accepted`);return}r.push(l)}),r.length>0&&f?.(r)},[i,s,f]),b=t.useCallback(e=>{e.preventDefault(),e.stopPropagation(),u(!0)},[]),j=t.useCallback(e=>{e.preventDefault(),e.stopPropagation(),u(!1)},[]),y=t.useCallback(e=>{e.preventDefault(),e.stopPropagation(),u(!1);const{files:r}=e.dataTransfer;d(r)},[d]),x=t.useCallback(e=>{d(e.target.files),c.current&&(c.current.value="")},[d]),p=t.useCallback(()=>{c.current?.click()},[]),U=t.useCallback(e=>{(e.key==="Enter"||e.key===" ")&&(e.preventDefault(),p())},[p]);return a.jsxs("div",{className:[o.default.fileUpload,m&&o.default.fileUploadDragging,D].filter(Boolean).join(" "),onDragOver:b,onDragLeave:j,onDrop:y,onClick:p,onKeyDown:U,role:"button",tabIndex:0,"aria-label":"Upload files",...k,children:[a.jsx("input",{ref:c,type:"file",accept:i.join(","),multiple:C,onChange:x,style:{display:"none"},"aria-hidden":"true"}),v||a.jsxs(a.Fragment,{children:[a.jsx("div",{className:o.default.fileUploadIcon,children:a.jsx(R.Upload,{size:32})}),a.jsxs("div",{className:o.default.fileUploadText,children:[a.jsx("strong",{children:"Click to upload"})," or drag and drop"]}),a.jsxs("div",{className:o.default.fileUploadHint,children:["Max file size: ",h.formatFileSize(s)]})]})]})};g.displayName="ChatFileUpload";exports.ChatFileUpload=g;
|
package/dist/index143.mjs
CHANGED
|
@@ -1,69 +1,114 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { useState as
|
|
3
|
-
import {
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
const
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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 "./index132.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
|
|
14
15
|
}) => {
|
|
15
|
-
const [
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
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}/`);
|
|
32
|
+
}
|
|
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(
|
|
23
67
|
"div",
|
|
24
68
|
{
|
|
25
|
-
className: [
|
|
26
|
-
|
|
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,
|
|
27
83
|
children: [
|
|
28
|
-
/* @__PURE__ */
|
|
29
|
-
|
|
30
|
-
]
|
|
31
|
-
}
|
|
32
|
-
) : /* @__PURE__ */ f(u, { children: [
|
|
33
|
-
/* @__PURE__ */ e(
|
|
34
|
-
"div",
|
|
35
|
-
{
|
|
36
|
-
className: [a.imagePreview, m].filter(Boolean).join(" "),
|
|
37
|
-
onClick: c,
|
|
38
|
-
onKeyDown: I,
|
|
39
|
-
role: "button",
|
|
40
|
-
tabIndex: 0,
|
|
41
|
-
"aria-label": r,
|
|
42
|
-
...s,
|
|
43
|
-
children: /* @__PURE__ */ e(
|
|
44
|
-
"img",
|
|
84
|
+
/* @__PURE__ */ p(
|
|
85
|
+
"input",
|
|
45
86
|
{
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
87
|
+
ref: i,
|
|
88
|
+
type: "file",
|
|
89
|
+
accept: s.join(","),
|
|
90
|
+
multiple: m,
|
|
91
|
+
onChange: N,
|
|
92
|
+
style: { display: "none" },
|
|
93
|
+
"aria-hidden": "true"
|
|
51
94
|
}
|
|
52
|
-
)
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
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
|
+
] })
|
|
107
|
+
]
|
|
108
|
+
}
|
|
109
|
+
);
|
|
65
110
|
};
|
|
66
|
-
|
|
111
|
+
P.displayName = "ChatFileUpload";
|
|
67
112
|
export {
|
|
68
|
-
|
|
113
|
+
P as ChatFileUpload
|
|
69
114
|
};
|
package/dist/index144.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),a=require("lucide-react"),p=require("./index140.cjs"),P=require("./index141.cjs"),b=require("./index138.cjs"),C=require("./index184.cjs"),t=require("./index132.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/index144.mjs
CHANGED
|
@@ -1,127 +1,125 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 "./index140.mjs";
|
|
4
|
+
import { ChatAudioPlayer as N } from "./index141.mjs";
|
|
5
|
+
import { ChatCodeBlock as I } from "./index138.mjs";
|
|
6
|
+
import { formatFileSize as k } from "./index184.mjs";
|
|
7
|
+
import t from "./index132.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
|
|
12
26
|
}) => {
|
|
13
|
-
const
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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,
|
|
34
|
+
{
|
|
35
|
+
src: l,
|
|
36
|
+
alt: i,
|
|
37
|
+
thumbnail: g,
|
|
38
|
+
onClick: n
|
|
39
|
+
}
|
|
40
|
+
),
|
|
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(
|
|
66
91
|
"div",
|
|
67
92
|
{
|
|
68
|
-
className: [
|
|
69
|
-
|
|
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,
|
|
70
98
|
children: [
|
|
71
|
-
/* @__PURE__ */
|
|
72
|
-
|
|
73
|
-
{
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
}
|
|
81
|
-
),
|
|
82
|
-
/* @__PURE__ */ r(
|
|
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(
|
|
83
108
|
"button",
|
|
84
109
|
{
|
|
85
|
-
className:
|
|
86
|
-
onClick:
|
|
87
|
-
|
|
88
|
-
|
|
110
|
+
className: t.attachmentPreviewRemove,
|
|
111
|
+
onClick: (r) => {
|
|
112
|
+
r.stopPropagation(), a();
|
|
113
|
+
},
|
|
114
|
+
"aria-label": `Remove ${i}`,
|
|
115
|
+
children: /* @__PURE__ */ e(u, { size: 14 })
|
|
89
116
|
}
|
|
90
|
-
)
|
|
91
|
-
/* @__PURE__ */ p("div", { className: o.audioPlayerProgress, children: [
|
|
92
|
-
y && /* @__PURE__ */ r("span", { className: o.attachmentPreviewName, children: y }),
|
|
93
|
-
/* @__PURE__ */ r(
|
|
94
|
-
"div",
|
|
95
|
-
{
|
|
96
|
-
className: o.audioPlayerTrack,
|
|
97
|
-
onClick: x,
|
|
98
|
-
onKeyDown: A,
|
|
99
|
-
role: "slider",
|
|
100
|
-
"aria-label": "Audio progress",
|
|
101
|
-
"aria-valuemin": 0,
|
|
102
|
-
"aria-valuemax": a,
|
|
103
|
-
"aria-valuenow": t,
|
|
104
|
-
"aria-valuetext": `${m(t)} of ${m(a)}`,
|
|
105
|
-
tabIndex: 0,
|
|
106
|
-
children: /* @__PURE__ */ r(
|
|
107
|
-
"div",
|
|
108
|
-
{
|
|
109
|
-
className: o.audioPlayerFill,
|
|
110
|
-
style: { width: `${E}%` }
|
|
111
|
-
}
|
|
112
|
-
)
|
|
113
|
-
}
|
|
114
|
-
),
|
|
115
|
-
/* @__PURE__ */ p("div", { className: o.audioPlayerTime, children: [
|
|
116
|
-
/* @__PURE__ */ r("span", { children: m(t) }),
|
|
117
|
-
/* @__PURE__ */ r("span", { children: m(a) })
|
|
118
|
-
] })
|
|
119
|
-
] })
|
|
117
|
+
)
|
|
120
118
|
]
|
|
121
119
|
}
|
|
122
120
|
);
|
|
123
121
|
};
|
|
124
|
-
|
|
122
|
+
$.displayName = "ChatAttachment";
|
|
125
123
|
export {
|
|
126
|
-
|
|
124
|
+
$ as ChatAttachment
|
|
127
125
|
};
|