@mediansh/widget 0.3.0 → 0.6.0
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/index.d.ts +23 -3
- package/dist/index.js +1328 -964
- package/dist/index.js.map +1 -1
- package/dist/{message-markdown-5ZZ6COCL.js → message-markdown-LOE74LBE.js} +4 -2
- package/dist/{message-markdown-5ZZ6COCL.js.map → message-markdown-LOE74LBE.js.map} +1 -1
- package/dist/widget.css +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -25,11 +25,11 @@ var SNOOZE_MAX_MS = 365 * 24 * 60 * 6e4;
|
|
|
25
25
|
|
|
26
26
|
// ../../apps/web/src/components/support-widget/sdk/median-support.tsx
|
|
27
27
|
import { ConvexProvider, ConvexReactClient } from "convex/react";
|
|
28
|
-
import { useEffect as useEffect20, useState as
|
|
28
|
+
import { useEffect as useEffect20, useState as useState20 } from "react";
|
|
29
29
|
|
|
30
30
|
// ../../apps/web/src/components/support-widget/markdown-chunk.tsx
|
|
31
31
|
import { lazy, useSyncExternalStore } from "react";
|
|
32
|
-
var load = () => import("./message-markdown-
|
|
32
|
+
var load = () => import("./message-markdown-LOE74LBE.js");
|
|
33
33
|
var MessageMarkdown = lazy(async () => ({
|
|
34
34
|
default: (await load()).MessageMarkdown
|
|
35
35
|
}));
|
|
@@ -78,19 +78,19 @@ function useMarkdownReady() {
|
|
|
78
78
|
}
|
|
79
79
|
|
|
80
80
|
// ../../apps/web/src/components/support-widget/widget-launcher.tsx
|
|
81
|
-
import { useCallback as useCallback7, useEffect as useEffect10, useRef as useRef11, useState as
|
|
81
|
+
import { useCallback as useCallback7, useEffect as useEffect10, useRef as useRef11, useState as useState13 } from "react";
|
|
82
82
|
|
|
83
83
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/lib/SSRBase.es.js
|
|
84
84
|
import * as e from "react";
|
|
85
85
|
var w = e.forwardRef((l5, s4) => {
|
|
86
86
|
const {
|
|
87
|
-
alt:
|
|
88
|
-
color:
|
|
89
|
-
size:
|
|
90
|
-
weight:
|
|
87
|
+
alt: r32,
|
|
88
|
+
color: a28 = "currentColor",
|
|
89
|
+
size: t9 = "1em",
|
|
90
|
+
weight: o42 = "regular",
|
|
91
91
|
mirrored: i3 = false,
|
|
92
92
|
children: n,
|
|
93
|
-
weights:
|
|
93
|
+
weights: c7,
|
|
94
94
|
...m5
|
|
95
95
|
} = l5;
|
|
96
96
|
return /* @__PURE__ */ e.createElement(
|
|
@@ -98,16 +98,16 @@ var w = e.forwardRef((l5, s4) => {
|
|
|
98
98
|
{
|
|
99
99
|
ref: s4,
|
|
100
100
|
xmlns: "http://www.w3.org/2000/svg",
|
|
101
|
-
width:
|
|
102
|
-
height:
|
|
103
|
-
fill:
|
|
101
|
+
width: t9,
|
|
102
|
+
height: t9,
|
|
103
|
+
fill: a28,
|
|
104
104
|
viewBox: "0 0 256 256",
|
|
105
105
|
transform: i3 ? "scale(-1, 1)" : void 0,
|
|
106
106
|
...m5
|
|
107
107
|
},
|
|
108
|
-
!!
|
|
108
|
+
!!r32 && /* @__PURE__ */ e.createElement("title", null, r32),
|
|
109
109
|
n,
|
|
110
|
-
|
|
110
|
+
c7.get(o42)
|
|
111
111
|
);
|
|
112
112
|
});
|
|
113
113
|
w.displayName = "SSRBase";
|
|
@@ -145,800 +145,836 @@ var a = /* @__PURE__ */ new Map([
|
|
|
145
145
|
]);
|
|
146
146
|
|
|
147
147
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowDown.es.js
|
|
148
|
-
var r = o.forwardRef((
|
|
148
|
+
var r = o.forwardRef((e54, t9) => /* @__PURE__ */ o.createElement(w, { ref: t9, ...e54, weights: a }));
|
|
149
149
|
r.displayName = "ArrowDownIcon";
|
|
150
150
|
|
|
151
|
-
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/
|
|
151
|
+
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowRight.es.js
|
|
152
152
|
import * as r2 from "react";
|
|
153
153
|
|
|
154
|
-
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/
|
|
154
|
+
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowRight.es.js
|
|
155
155
|
import * as e3 from "react";
|
|
156
156
|
var a2 = /* @__PURE__ */ new Map([
|
|
157
157
|
[
|
|
158
158
|
"bold",
|
|
159
|
-
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "
|
|
159
|
+
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "M224.49,136.49l-72,72a12,12,0,0,1-17-17L187,140H40a12,12,0,0,1,0-24H187L135.51,64.48a12,12,0,0,1,17-17l72,72A12,12,0,0,1,224.49,136.49Z" }))
|
|
160
160
|
],
|
|
161
161
|
[
|
|
162
162
|
"duotone",
|
|
163
|
-
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "
|
|
163
|
+
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "M216,128l-72,72V56Z", opacity: "0.2" }), /* @__PURE__ */ e3.createElement("path", { d: "M221.66,122.34l-72-72A8,8,0,0,0,136,56v64H40a8,8,0,0,0,0,16h96v64a8,8,0,0,0,13.66,5.66l72-72A8,8,0,0,0,221.66,122.34ZM152,180.69V75.31L204.69,128Z" }))
|
|
164
164
|
],
|
|
165
165
|
[
|
|
166
166
|
"fill",
|
|
167
|
-
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "
|
|
167
|
+
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "M221.66,133.66l-72,72A8,8,0,0,1,136,200V136H40a8,8,0,0,1,0-16h96V56a8,8,0,0,1,13.66-5.66l72,72A8,8,0,0,1,221.66,133.66Z" }))
|
|
168
168
|
],
|
|
169
169
|
[
|
|
170
170
|
"light",
|
|
171
|
-
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "
|
|
171
|
+
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "M220.24,132.24l-72,72a6,6,0,0,1-8.48-8.48L201.51,134H40a6,6,0,0,1,0-12H201.51L139.76,60.24a6,6,0,0,1,8.48-8.48l72,72A6,6,0,0,1,220.24,132.24Z" }))
|
|
172
172
|
],
|
|
173
173
|
[
|
|
174
174
|
"regular",
|
|
175
|
-
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "
|
|
175
|
+
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "M221.66,133.66l-72,72a8,8,0,0,1-11.32-11.32L196.69,136H40a8,8,0,0,1,0-16H196.69L138.34,61.66a8,8,0,0,1,11.32-11.32l72,72A8,8,0,0,1,221.66,133.66Z" }))
|
|
176
176
|
],
|
|
177
177
|
[
|
|
178
178
|
"thin",
|
|
179
|
-
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "
|
|
179
|
+
/* @__PURE__ */ e3.createElement(e3.Fragment, null, /* @__PURE__ */ e3.createElement("path", { d: "M218.83,130.83l-72,72a4,4,0,0,1-5.66-5.66L206.34,132H40a4,4,0,0,1,0-8H206.34L141.17,58.83a4,4,0,0,1,5.66-5.66l72,72A4,4,0,0,1,218.83,130.83Z" }))
|
|
180
180
|
]
|
|
181
181
|
]);
|
|
182
182
|
|
|
183
|
+
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowRight.es.js
|
|
184
|
+
var o2 = r2.forwardRef((t9, e54) => /* @__PURE__ */ r2.createElement(w, { ref: e54, ...t9, weights: a2 }));
|
|
185
|
+
o2.displayName = "ArrowRightIcon";
|
|
186
|
+
|
|
183
187
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowUp.es.js
|
|
184
|
-
|
|
185
|
-
|
|
188
|
+
import * as r3 from "react";
|
|
189
|
+
|
|
190
|
+
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowUp.es.js
|
|
191
|
+
import * as e4 from "react";
|
|
192
|
+
var a3 = /* @__PURE__ */ new Map([
|
|
193
|
+
[
|
|
194
|
+
"bold",
|
|
195
|
+
/* @__PURE__ */ e4.createElement(e4.Fragment, null, /* @__PURE__ */ e4.createElement("path", { d: "M208.49,120.49a12,12,0,0,1-17,0L140,69V216a12,12,0,0,1-24,0V69L64.49,120.49a12,12,0,0,1-17-17l72-72a12,12,0,0,1,17,0l72,72A12,12,0,0,1,208.49,120.49Z" }))
|
|
196
|
+
],
|
|
197
|
+
[
|
|
198
|
+
"duotone",
|
|
199
|
+
/* @__PURE__ */ e4.createElement(e4.Fragment, null, /* @__PURE__ */ e4.createElement("path", { d: "M200,112H56l72-72Z", opacity: "0.2" }), /* @__PURE__ */ e4.createElement("path", { d: "M205.66,106.34l-72-72a8,8,0,0,0-11.32,0l-72,72A8,8,0,0,0,56,120h64v96a8,8,0,0,0,16,0V120h64a8,8,0,0,0,5.66-13.66ZM75.31,104,128,51.31,180.69,104Z" }))
|
|
200
|
+
],
|
|
201
|
+
[
|
|
202
|
+
"fill",
|
|
203
|
+
/* @__PURE__ */ e4.createElement(e4.Fragment, null, /* @__PURE__ */ e4.createElement("path", { d: "M207.39,115.06A8,8,0,0,1,200,120H136v96a8,8,0,0,1-16,0V120H56a8,8,0,0,1-5.66-13.66l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,207.39,115.06Z" }))
|
|
204
|
+
],
|
|
205
|
+
[
|
|
206
|
+
"light",
|
|
207
|
+
/* @__PURE__ */ e4.createElement(e4.Fragment, null, /* @__PURE__ */ e4.createElement("path", { d: "M204.24,116.24a6,6,0,0,1-8.48,0L134,54.49V216a6,6,0,0,1-12,0V54.49L60.24,116.24a6,6,0,0,1-8.48-8.48l72-72a6,6,0,0,1,8.48,0l72,72A6,6,0,0,1,204.24,116.24Z" }))
|
|
208
|
+
],
|
|
209
|
+
[
|
|
210
|
+
"regular",
|
|
211
|
+
/* @__PURE__ */ e4.createElement(e4.Fragment, null, /* @__PURE__ */ e4.createElement("path", { d: "M205.66,117.66a8,8,0,0,1-11.32,0L136,59.31V216a8,8,0,0,1-16,0V59.31L61.66,117.66a8,8,0,0,1-11.32-11.32l72-72a8,8,0,0,1,11.32,0l72,72A8,8,0,0,1,205.66,117.66Z" }))
|
|
212
|
+
],
|
|
213
|
+
[
|
|
214
|
+
"thin",
|
|
215
|
+
/* @__PURE__ */ e4.createElement(e4.Fragment, null, /* @__PURE__ */ e4.createElement("path", { d: "M202.83,114.83a4,4,0,0,1-5.66,0L132,49.66V216a4,4,0,0,1-8,0V49.66L58.83,114.83a4,4,0,0,1-5.66-5.66l72-72a4,4,0,0,1,5.66,0l72,72A4,4,0,0,1,202.83,114.83Z" }))
|
|
216
|
+
]
|
|
217
|
+
]);
|
|
218
|
+
|
|
219
|
+
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowUp.es.js
|
|
220
|
+
var o3 = r3.forwardRef((e54, t9) => /* @__PURE__ */ r3.createElement(w, { ref: t9, ...e54, weights: a3 }));
|
|
221
|
+
o3.displayName = "ArrowUpIcon";
|
|
186
222
|
|
|
187
223
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsClockwise.es.js
|
|
188
|
-
import * as
|
|
224
|
+
import * as o4 from "react";
|
|
189
225
|
|
|
190
226
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowsClockwise.es.js
|
|
191
|
-
import * as
|
|
192
|
-
var
|
|
227
|
+
import * as a4 from "react";
|
|
228
|
+
var e5 = /* @__PURE__ */ new Map([
|
|
193
229
|
[
|
|
194
230
|
"bold",
|
|
195
|
-
/* @__PURE__ */
|
|
231
|
+
/* @__PURE__ */ a4.createElement(a4.Fragment, null, /* @__PURE__ */ a4.createElement("path", { d: "M228,48V96a12,12,0,0,1-12,12H168a12,12,0,0,1,0-24h19l-7.8-7.8a75.55,75.55,0,0,0-53.32-22.26h-.43A75.49,75.49,0,0,0,72.39,75.57,12,12,0,1,1,55.61,58.41a99.38,99.38,0,0,1,69.87-28.47H126A99.42,99.42,0,0,1,196.2,59.23L204,67V48a12,12,0,0,1,24,0ZM183.61,180.43a75.49,75.49,0,0,1-53.09,21.63h-.43A75.55,75.55,0,0,1,76.77,179.8L69,172H88a12,12,0,0,0,0-24H40a12,12,0,0,0-12,12v48a12,12,0,0,0,24,0V189l7.8,7.8A99.42,99.42,0,0,0,130,226.06h.56a99.38,99.38,0,0,0,69.87-28.47,12,12,0,0,0-16.78-17.16Z" }))
|
|
196
232
|
],
|
|
197
233
|
[
|
|
198
234
|
"duotone",
|
|
199
|
-
/* @__PURE__ */
|
|
235
|
+
/* @__PURE__ */ a4.createElement(a4.Fragment, null, /* @__PURE__ */ a4.createElement("path", { d: "M216,128a88,88,0,1,1-88-88A88,88,0,0,1,216,128Z", opacity: "0.2" }), /* @__PURE__ */ a4.createElement("path", { d: "M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z" }))
|
|
200
236
|
],
|
|
201
237
|
[
|
|
202
238
|
"fill",
|
|
203
|
-
/* @__PURE__ */
|
|
239
|
+
/* @__PURE__ */ a4.createElement(a4.Fragment, null, /* @__PURE__ */ a4.createElement("path", { d: "M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1-5.66-13.66L180.65,72a79.48,79.48,0,0,0-54.72-22.09h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27,96,96,0,0,1,192,60.7l18.36-18.36A8,8,0,0,1,224,48ZM186.41,183.29A80,80,0,0,1,75.35,184l18.31-18.31A8,8,0,0,0,88,152H40a8,8,0,0,0-8,8v48a8,8,0,0,0,13.66,5.66L64,195.3a95.42,95.42,0,0,0,66,26.76h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z" }))
|
|
204
240
|
],
|
|
205
241
|
[
|
|
206
242
|
"light",
|
|
207
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ a4.createElement(a4.Fragment, null, /* @__PURE__ */ a4.createElement("path", { d: "M222,48V96a6,6,0,0,1-6,6H168a6,6,0,0,1,0-12h33.52L183.47,72a81.51,81.51,0,0,0-57.53-24h-.46A81.5,81.5,0,0,0,68.19,71.28a6,6,0,1,1-8.38-8.58,93.38,93.38,0,0,1,65.67-26.76H126a93.45,93.45,0,0,1,66,27.53l18,18V48a6,6,0,0,1,12,0ZM187.81,184.72a81.5,81.5,0,0,1-57.29,23.34h-.46a81.51,81.51,0,0,1-57.53-24L54.48,166H88a6,6,0,0,0,0-12H40a6,6,0,0,0-6,6v48a6,6,0,0,0,12,0V174.48l18,18.05a93.45,93.45,0,0,0,66,27.53h.52a93.38,93.38,0,0,0,65.67-26.76,6,6,0,1,0-8.38-8.58Z" }))
|
|
208
244
|
],
|
|
209
245
|
[
|
|
210
246
|
"regular",
|
|
211
|
-
/* @__PURE__ */
|
|
247
|
+
/* @__PURE__ */ a4.createElement(a4.Fragment, null, /* @__PURE__ */ a4.createElement("path", { d: "M224,48V96a8,8,0,0,1-8,8H168a8,8,0,0,1,0-16h28.69L182.06,73.37a79.56,79.56,0,0,0-56.13-23.43h-.45A79.52,79.52,0,0,0,69.59,72.71,8,8,0,0,1,58.41,61.27a96,96,0,0,1,135,.79L208,76.69V48a8,8,0,0,1,16,0ZM186.41,183.29a80,80,0,0,1-112.47-.66L59.31,168H88a8,8,0,0,0,0-16H40a8,8,0,0,0-8,8v48a8,8,0,0,0,16,0V179.31l14.63,14.63A95.43,95.43,0,0,0,130,222.06h.53a95.36,95.36,0,0,0,67.07-27.33,8,8,0,0,0-11.18-11.44Z" }))
|
|
212
248
|
],
|
|
213
249
|
[
|
|
214
250
|
"thin",
|
|
215
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ a4.createElement(a4.Fragment, null, /* @__PURE__ */ a4.createElement("path", { d: "M220,48V96a4,4,0,0,1-4,4H168a4,4,0,0,1,0-8h38.34L184.89,70.54A84,84,0,0,0,66.8,69.85a4,4,0,1,1-5.6-5.72,92,92,0,0,1,129.34.76L212,86.34V48a4,4,0,0,1,8,0ZM189.2,186.15a83.44,83.44,0,0,1-58.68,23.91h-.47a83.52,83.52,0,0,1-58.94-24.6L49.66,164H88a4,4,0,0,0,0-8H40a4,4,0,0,0-4,4v48a4,4,0,0,0,8,0V169.66l21.46,21.45A91.43,91.43,0,0,0,130,218.06h.51a91.45,91.45,0,0,0,64.28-26.19,4,4,0,1,0-5.6-5.72Z" }))
|
|
216
252
|
]
|
|
217
253
|
]);
|
|
218
254
|
|
|
219
255
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsClockwise.es.js
|
|
220
|
-
var
|
|
221
|
-
|
|
256
|
+
var r4 = o4.forwardRef((e54, s4) => /* @__PURE__ */ o4.createElement(w, { ref: s4, ...e54, weights: e5 }));
|
|
257
|
+
r4.displayName = "ArrowsClockwiseIcon";
|
|
222
258
|
|
|
223
259
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsIn.es.js
|
|
224
|
-
import * as
|
|
260
|
+
import * as r5 from "react";
|
|
225
261
|
|
|
226
262
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowsIn.es.js
|
|
227
|
-
import * as
|
|
228
|
-
var
|
|
263
|
+
import * as a5 from "react";
|
|
264
|
+
var e6 = /* @__PURE__ */ new Map([
|
|
229
265
|
[
|
|
230
266
|
"bold",
|
|
231
|
-
/* @__PURE__ */
|
|
267
|
+
/* @__PURE__ */ a5.createElement(a5.Fragment, null, /* @__PURE__ */ a5.createElement("path", { d: "M140,104V64a12,12,0,0,1,24,0V75l35.51-35.52a12,12,0,0,1,17,17L181,92h11a12,12,0,0,1,0,24H152A12,12,0,0,1,140,104Zm-36,36H64a12,12,0,0,0,0,24H75L39.51,199.51a12,12,0,0,0,17,17L92,181v11a12,12,0,0,0,24,0V152A12,12,0,0,0,104,140Zm77,24h11a12,12,0,0,0,0-24H152a12,12,0,0,0-12,12v40a12,12,0,0,0,24,0V181l35.51,35.52a12,12,0,0,0,17-17ZM104,52A12,12,0,0,0,92,64V75L56.49,39.51a12,12,0,0,0-17,17L75,92H64a12,12,0,0,0,0,24h40a12,12,0,0,0,12-12V64A12,12,0,0,0,104,52Z" }))
|
|
232
268
|
],
|
|
233
269
|
[
|
|
234
270
|
"duotone",
|
|
235
|
-
/* @__PURE__ */
|
|
271
|
+
/* @__PURE__ */ a5.createElement(a5.Fragment, null, /* @__PURE__ */ a5.createElement(
|
|
236
272
|
"path",
|
|
237
273
|
{
|
|
238
274
|
d: "M224,48V208a16,16,0,0,1-16,16H48a16,16,0,0,1-16-16V48A16,16,0,0,1,48,32H208A16,16,0,0,1,224,48Z",
|
|
239
275
|
opacity: "0.2"
|
|
240
276
|
}
|
|
241
|
-
), /* @__PURE__ */
|
|
277
|
+
), /* @__PURE__ */ a5.createElement("path", { d: "M144,104V64a8,8,0,0,1,16,0V84.69l42.34-42.35a8,8,0,0,1,11.32,11.32L171.31,96H192a8,8,0,0,1,0,16H152A8,8,0,0,1,144,104Zm-40,40H64a8,8,0,0,0,0,16H84.69L42.34,202.34a8,8,0,0,0,11.32,11.32L96,171.31V192a8,8,0,0,0,16,0V152A8,8,0,0,0,104,144Zm67.31,16H192a8,8,0,0,0,0-16H152a8,8,0,0,0-8,8v40a8,8,0,0,0,16,0V171.31l42.34,42.35a8,8,0,0,0,11.32-11.32ZM104,56a8,8,0,0,0-8,8V84.69L53.66,42.34A8,8,0,0,0,42.34,53.66L84.69,96H64a8,8,0,0,0,0,16h40a8,8,0,0,0,8-8V64A8,8,0,0,0,104,56Z" }))
|
|
242
278
|
],
|
|
243
279
|
[
|
|
244
280
|
"fill",
|
|
245
|
-
/* @__PURE__ */
|
|
281
|
+
/* @__PURE__ */ a5.createElement(a5.Fragment, null, /* @__PURE__ */ a5.createElement("path", { d: "M144,104V64a8,8,0,0,1,13.66-5.66L172,72.69l30.34-30.35a8,8,0,0,1,11.32,11.32L183.31,84l14.35,14.34A8,8,0,0,1,192,112H152A8,8,0,0,1,144,104Zm-40,40H64a8,8,0,0,0-5.66,13.66L72.69,172,42.34,202.34a8,8,0,0,0,11.32,11.32L84,183.31l14.34,14.35A8,8,0,0,0,112,192V152A8,8,0,0,0,104,144Zm3.06-87.39a8,8,0,0,0-8.72,1.73L84,72.69,53.66,42.34A8,8,0,0,0,42.34,53.66L72.69,84,58.34,98.34A8,8,0,0,0,64,112h40a8,8,0,0,0,8-8V64A8,8,0,0,0,107.06,56.61ZM183.31,172l14.35-14.34A8,8,0,0,0,192,144H152a8,8,0,0,0-8,8v40a8,8,0,0,0,13.66,5.66L172,183.31l30.34,30.35a8,8,0,0,0,11.32-11.32Z" }))
|
|
246
282
|
],
|
|
247
283
|
[
|
|
248
284
|
"light",
|
|
249
|
-
/* @__PURE__ */
|
|
285
|
+
/* @__PURE__ */ a5.createElement(a5.Fragment, null, /* @__PURE__ */ a5.createElement("path", { d: "M146,104V64a6,6,0,0,1,12,0V89.51l45.76-45.75a6,6,0,0,1,8.48,8.48L166.48,98H192a6,6,0,0,1,0,12H152A6,6,0,0,1,146,104Zm-42,42H64a6,6,0,0,0,0,12H89.52L43.76,203.76a6,6,0,1,0,8.48,8.48L98,166.48V192a6,6,0,0,0,12,0V152A6,6,0,0,0,104,146Zm62.48,12H192a6,6,0,0,0,0-12H152a6,6,0,0,0-6,6v40a6,6,0,0,0,12,0V166.48l45.76,45.76a6,6,0,0,0,8.48-8.48ZM104,58a6,6,0,0,0-6,6V89.51L52.24,43.76a6,6,0,0,0-8.48,8.48L89.52,98H64a6,6,0,0,0,0,12h40a6,6,0,0,0,6-6V64A6,6,0,0,0,104,58Z" }))
|
|
250
286
|
],
|
|
251
287
|
[
|
|
252
288
|
"regular",
|
|
253
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ a5.createElement(a5.Fragment, null, /* @__PURE__ */ a5.createElement("path", { d: "M144,104V64a8,8,0,0,1,16,0V84.69l42.34-42.35a8,8,0,0,1,11.32,11.32L171.31,96H192a8,8,0,0,1,0,16H152A8,8,0,0,1,144,104Zm-40,40H64a8,8,0,0,0,0,16H84.69L42.34,202.34a8,8,0,0,0,11.32,11.32L96,171.31V192a8,8,0,0,0,16,0V152A8,8,0,0,0,104,144Zm67.31,16H192a8,8,0,0,0,0-16H152a8,8,0,0,0-8,8v40a8,8,0,0,0,16,0V171.31l42.34,42.35a8,8,0,0,0,11.32-11.32ZM104,56a8,8,0,0,0-8,8V84.69L53.66,42.34A8,8,0,0,0,42.34,53.66L84.69,96H64a8,8,0,0,0,0,16h40a8,8,0,0,0,8-8V64A8,8,0,0,0,104,56Z" }))
|
|
254
290
|
],
|
|
255
291
|
[
|
|
256
292
|
"thin",
|
|
257
|
-
/* @__PURE__ */
|
|
293
|
+
/* @__PURE__ */ a5.createElement(a5.Fragment, null, /* @__PURE__ */ a5.createElement("path", { d: "M148,104V64a4,4,0,0,1,8,0V94.34l49.17-49.17a4,4,0,1,1,5.66,5.66L161.66,100H192a4,4,0,0,1,0,8H152A4,4,0,0,1,148,104Zm-44,44H64a4,4,0,0,0,0,8H94.34L45.17,205.17a4,4,0,0,0,5.66,5.66L100,161.66V192a4,4,0,0,0,8,0V152A4,4,0,0,0,104,148Zm57.66,8H192a4,4,0,0,0,0-8H152a4,4,0,0,0-4,4v40a4,4,0,0,0,8,0V161.66l49.17,49.17a4,4,0,0,0,5.66-5.66ZM104,60a4,4,0,0,0-4,4V94.34L50.83,45.17a4,4,0,0,0-5.66,5.66L94.34,100H64a4,4,0,0,0,0,8h40a4,4,0,0,0,4-4V64A4,4,0,0,0,104,60Z" }))
|
|
258
294
|
]
|
|
259
295
|
]);
|
|
260
296
|
|
|
261
297
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsIn.es.js
|
|
262
|
-
var
|
|
263
|
-
|
|
298
|
+
var o5 = r5.forwardRef((e54, s4) => /* @__PURE__ */ r5.createElement(w, { ref: s4, ...e54, weights: e6 }));
|
|
299
|
+
o5.displayName = "ArrowsInIcon";
|
|
264
300
|
|
|
265
301
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsOut.es.js
|
|
266
|
-
import * as
|
|
302
|
+
import * as r6 from "react";
|
|
267
303
|
|
|
268
304
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ArrowsOut.es.js
|
|
269
|
-
import * as
|
|
270
|
-
var
|
|
305
|
+
import * as a6 from "react";
|
|
306
|
+
var e7 = /* @__PURE__ */ new Map([
|
|
271
307
|
[
|
|
272
308
|
"bold",
|
|
273
|
-
/* @__PURE__ */
|
|
309
|
+
/* @__PURE__ */ a6.createElement(a6.Fragment, null, /* @__PURE__ */ a6.createElement("path", { d: "M220,48V96a12,12,0,0,1-24,0V77l-35.51,35.52a12,12,0,0,1-17-17L179,60H160a12,12,0,0,1,0-24h48A12,12,0,0,1,220,48ZM95.51,143.51,60,179V160a12,12,0,0,0-24,0v48a12,12,0,0,0,12,12H96a12,12,0,0,0,0-24H77l35.52-35.51a12,12,0,0,0-17-17ZM208,148a12,12,0,0,0-12,12v19l-35.51-35.52a12,12,0,0,0-17,17L179,196H160a12,12,0,0,0,0,24h48a12,12,0,0,0,12-12V160A12,12,0,0,0,208,148ZM77,60H96a12,12,0,0,0,0-24H48A12,12,0,0,0,36,48V96a12,12,0,0,0,24,0V77l35.51,35.52a12,12,0,0,0,17-17Z" }))
|
|
274
310
|
],
|
|
275
311
|
[
|
|
276
312
|
"duotone",
|
|
277
|
-
/* @__PURE__ */
|
|
313
|
+
/* @__PURE__ */ a6.createElement(a6.Fragment, null, /* @__PURE__ */ a6.createElement("path", { d: "M208,48V208H48V48Z", opacity: "0.2" }), /* @__PURE__ */ a6.createElement("path", { d: "M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z" }))
|
|
278
314
|
],
|
|
279
315
|
[
|
|
280
316
|
"fill",
|
|
281
|
-
/* @__PURE__ */
|
|
317
|
+
/* @__PURE__ */ a6.createElement(a6.Fragment, null, /* @__PURE__ */ a6.createElement("path", { d: "M109.66,146.34a8,8,0,0,1,0,11.32L83.31,184l18.35,18.34A8,8,0,0,1,96,216H48a8,8,0,0,1-8-8V160a8,8,0,0,1,13.66-5.66L72,172.69l26.34-26.35A8,8,0,0,1,109.66,146.34ZM83.31,72l18.35-18.34A8,8,0,0,0,96,40H48a8,8,0,0,0-8,8V96a8,8,0,0,0,13.66,5.66L72,83.31l26.34,26.35a8,8,0,0,0,11.32-11.32ZM208,40H160a8,8,0,0,0-5.66,13.66L172.69,72,146.34,98.34a8,8,0,0,0,11.32,11.32L184,83.31l18.34,18.35A8,8,0,0,0,216,96V48A8,8,0,0,0,208,40Zm3.06,112.61a8,8,0,0,0-8.72,1.73L184,172.69l-26.34-26.35a8,8,0,0,0-11.32,11.32L172.69,184l-18.35,18.34A8,8,0,0,0,160,216h48a8,8,0,0,0,8-8V160A8,8,0,0,0,211.06,152.61Z" }))
|
|
282
318
|
],
|
|
283
319
|
[
|
|
284
320
|
"light",
|
|
285
|
-
/* @__PURE__ */
|
|
321
|
+
/* @__PURE__ */ a6.createElement(a6.Fragment, null, /* @__PURE__ */ a6.createElement("path", { d: "M214,48V96a6,6,0,0,1-12,0V62.48l-45.76,45.76a6,6,0,0,1-8.48-8.48L193.52,54H160a6,6,0,0,1,0-12h48A6,6,0,0,1,214,48ZM99.76,147.76,54,193.52V160a6,6,0,0,0-12,0v48a6,6,0,0,0,6,6H96a6,6,0,0,0,0-12H62.48l45.76-45.76a6,6,0,0,0-8.48-8.48ZM208,154a6,6,0,0,0-6,6v33.52l-45.76-45.76a6,6,0,0,0-8.48,8.48L193.52,202H160a6,6,0,0,0,0,12h48a6,6,0,0,0,6-6V160A6,6,0,0,0,208,154ZM62.48,54H96a6,6,0,0,0,0-12H48a6,6,0,0,0-6,6V96a6,6,0,0,0,12,0V62.48l45.76,45.76a6,6,0,0,0,8.48-8.48Z" }))
|
|
286
322
|
],
|
|
287
323
|
[
|
|
288
324
|
"regular",
|
|
289
|
-
/* @__PURE__ */
|
|
325
|
+
/* @__PURE__ */ a6.createElement(a6.Fragment, null, /* @__PURE__ */ a6.createElement("path", { d: "M216,48V96a8,8,0,0,1-16,0V67.31l-42.34,42.35a8,8,0,0,1-11.32-11.32L188.69,56H160a8,8,0,0,1,0-16h48A8,8,0,0,1,216,48ZM98.34,146.34,56,188.69V160a8,8,0,0,0-16,0v48a8,8,0,0,0,8,8H96a8,8,0,0,0,0-16H67.31l42.35-42.34a8,8,0,0,0-11.32-11.32ZM208,152a8,8,0,0,0-8,8v28.69l-42.34-42.35a8,8,0,0,0-11.32,11.32L188.69,200H160a8,8,0,0,0,0,16h48a8,8,0,0,0,8-8V160A8,8,0,0,0,208,152ZM67.31,56H96a8,8,0,0,0,0-16H48a8,8,0,0,0-8,8V96a8,8,0,0,0,16,0V67.31l42.34,42.35a8,8,0,0,0,11.32-11.32Z" }))
|
|
290
326
|
],
|
|
291
327
|
[
|
|
292
328
|
"thin",
|
|
293
|
-
/* @__PURE__ */
|
|
329
|
+
/* @__PURE__ */ a6.createElement(a6.Fragment, null, /* @__PURE__ */ a6.createElement("path", { d: "M212,48V96a4,4,0,0,1-8,0V57.66l-49.17,49.17a4,4,0,0,1-5.66-5.66L198.34,52H160a4,4,0,0,1,0-8h48A4,4,0,0,1,212,48ZM101.17,149.17,52,198.34V160a4,4,0,0,0-8,0v48a4,4,0,0,0,4,4H96a4,4,0,0,0,0-8H57.66l49.17-49.17a4,4,0,0,0-5.66-5.66ZM208,156a4,4,0,0,0-4,4v38.34l-49.17-49.17a4,4,0,0,0-5.66,5.66L198.34,204H160a4,4,0,0,0,0,8h48a4,4,0,0,0,4-4V160A4,4,0,0,0,208,156ZM57.66,52H96a4,4,0,0,0,0-8H48a4,4,0,0,0-4,4V96a4,4,0,0,0,8,0V57.66l49.17,49.17a4,4,0,0,0,5.66-5.66Z" }))
|
|
294
330
|
]
|
|
295
331
|
]);
|
|
296
332
|
|
|
297
333
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ArrowsOut.es.js
|
|
298
|
-
var
|
|
299
|
-
|
|
334
|
+
var o6 = r6.forwardRef((t9, e54) => /* @__PURE__ */ r6.createElement(w, { ref: e54, ...t9, weights: e7 }));
|
|
335
|
+
o6.displayName = "ArrowsOutIcon";
|
|
300
336
|
|
|
301
337
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Bug.es.js
|
|
302
|
-
import * as
|
|
338
|
+
import * as o7 from "react";
|
|
303
339
|
|
|
304
340
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Bug.es.js
|
|
305
|
-
import * as
|
|
306
|
-
var
|
|
341
|
+
import * as a7 from "react";
|
|
342
|
+
var e8 = /* @__PURE__ */ new Map([
|
|
307
343
|
[
|
|
308
344
|
"bold",
|
|
309
|
-
/* @__PURE__ */
|
|
345
|
+
/* @__PURE__ */ a7.createElement(a7.Fragment, null, /* @__PURE__ */ a7.createElement("path", { d: "M140,88a16,16,0,1,1,16,16A16,16,0,0,1,140,88ZM100,72a16,16,0,1,0,16,16A16,16,0,0,0,100,72Zm120,72a91.84,91.84,0,0,1-2.34,20.64L236.81,173a12,12,0,0,1-9.62,22l-18-7.85a92,92,0,0,1-162.46,0l-18,7.85a12,12,0,1,1-9.62-22l19.15-8.36A91.84,91.84,0,0,1,36,144v-4H16a12,12,0,0,1,0-24H36v-4a91.84,91.84,0,0,1,2.34-20.64L19.19,83a12,12,0,0,1,9.62-22l18,7.85a92,92,0,0,1,162.46,0l18-7.85a12,12,0,1,1,9.62,22l-19.15,8.36A91.84,91.84,0,0,1,220,112v4h20a12,12,0,0,1,0,24H220ZM60,116H196v-4a68,68,0,0,0-136,0Zm56,94.92V140H60v4A68.1,68.1,0,0,0,116,210.92ZM196,144v-4H140v70.92A68.1,68.1,0,0,0,196,144Z" }))
|
|
310
346
|
],
|
|
311
347
|
[
|
|
312
348
|
"duotone",
|
|
313
|
-
/* @__PURE__ */
|
|
349
|
+
/* @__PURE__ */ a7.createElement(a7.Fragment, null, /* @__PURE__ */ a7.createElement("path", { d: "M208,128v16a80,80,0,0,1-160,0V128Z", opacity: "0.2" }), /* @__PURE__ */ a7.createElement("path", { d: "M144,92a12,12,0,1,1,12,12A12,12,0,0,1,144,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216ZM56,120H200v-8a72,72,0,0,0-144,0Zm64,95.54V136H56v8A72.08,72.08,0,0,0,120,215.54ZM200,144v-8H136v79.54A72.08,72.08,0,0,0,200,144Z" }))
|
|
314
350
|
],
|
|
315
351
|
[
|
|
316
352
|
"fill",
|
|
317
|
-
/* @__PURE__ */
|
|
353
|
+
/* @__PURE__ */ a7.createElement(a7.Fragment, null, /* @__PURE__ */ a7.createElement("path", { d: "M168,92a12,12,0,1,1-12-12A12,12,0,0,1,168,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216Zm-80,0a8,8,0,0,0-16,0v64a8,8,0,0,0,16,0Zm64-32a72,72,0,0,0-144,0v8H200Z" }))
|
|
318
354
|
],
|
|
319
355
|
[
|
|
320
356
|
"light",
|
|
321
|
-
/* @__PURE__ */
|
|
357
|
+
/* @__PURE__ */ a7.createElement(a7.Fragment, null, /* @__PURE__ */ a7.createElement("path", { d: "M146,92a10,10,0,1,1,10,10A10,10,0,0,1,146,92ZM100,82a10,10,0,1,0,10,10A10,10,0,0,0,100,82Zm146,46a6,6,0,0,1-6,6H214v10a85.88,85.88,0,0,1-3.45,24.08L234.4,178.5a6,6,0,0,1-4.8,11l-23.23-10.15a86,86,0,0,1-156.74,0L26.4,189.5a6,6,0,1,1-4.8-11l23.85-10.42A85.88,85.88,0,0,1,42,144V134H16a6,6,0,0,1,0-12H42V112a85.88,85.88,0,0,1,3.45-24.08L21.6,77.5a6,6,0,0,1,4.8-11L49.63,76.65a86,86,0,0,1,156.74,0L229.6,66.5a6,6,0,1,1,4.8,11L210.55,87.92A85.88,85.88,0,0,1,214,112v10h26A6,6,0,0,1,246,128ZM54,122H202V112a74,74,0,0,0-148,0Zm68,95.74V134H54v10A74.09,74.09,0,0,0,122,217.74ZM202,134H134v83.74A74.09,74.09,0,0,0,202,144Z" }))
|
|
322
358
|
],
|
|
323
359
|
[
|
|
324
360
|
"regular",
|
|
325
|
-
/* @__PURE__ */
|
|
361
|
+
/* @__PURE__ */ a7.createElement(a7.Fragment, null, /* @__PURE__ */ a7.createElement("path", { d: "M144,92a12,12,0,1,1,12,12A12,12,0,0,1,144,92ZM100,80a12,12,0,1,0,12,12A12,12,0,0,0,100,80Zm116,64A87.76,87.76,0,0,1,213,167l22.24,9.72A8,8,0,0,1,232,192a7.89,7.89,0,0,1-3.2-.67L207.38,182a88,88,0,0,1-158.76,0L27.2,191.33A7.89,7.89,0,0,1,24,192a8,8,0,0,1-3.2-15.33L43,167A87.76,87.76,0,0,1,40,144v-8H16a8,8,0,0,1,0-16H40v-8a87.76,87.76,0,0,1,3-23L20.8,79.33a8,8,0,1,1,6.4-14.66L48.62,74a88,88,0,0,1,158.76,0l21.42-9.36a8,8,0,0,1,6.4,14.66L213,89.05a87.76,87.76,0,0,1,3,23v8h24a8,8,0,0,1,0,16H216ZM56,120H200v-8a72,72,0,0,0-144,0Zm64,95.54V136H56v8A72.08,72.08,0,0,0,120,215.54ZM200,144v-8H136v79.54A72.08,72.08,0,0,0,200,144Z" }))
|
|
326
362
|
],
|
|
327
363
|
[
|
|
328
364
|
"thin",
|
|
329
|
-
/* @__PURE__ */
|
|
365
|
+
/* @__PURE__ */ a7.createElement(a7.Fragment, null, /* @__PURE__ */ a7.createElement("path", { d: "M148,92a8,8,0,1,1,8,8A8,8,0,0,1,148,92Zm-48-8a8,8,0,1,0,8,8A8,8,0,0,0,100,84Zm144,44a4,4,0,0,1-4,4H212v12a83.64,83.64,0,0,1-3.87,25.2l25.47,11.13A4,4,0,0,1,232,188a4.09,4.09,0,0,1-1.6-.33l-25-10.95a84,84,0,0,1-154.72,0l-25,10.95A4.09,4.09,0,0,1,24,188a4,4,0,0,1-1.6-7.67L47.87,169.2A83.64,83.64,0,0,1,44,144V132H16a4,4,0,0,1,0-8H44V112a83.64,83.64,0,0,1,3.87-25.2L22.4,75.67a4,4,0,0,1,3.2-7.34l25,11a84,84,0,0,1,154.72,0l25-11a4,4,0,1,1,3.2,7.34L208.13,86.8A83.64,83.64,0,0,1,212,112v12h28A4,4,0,0,1,244,128ZM52,124H204V112a76,76,0,0,0-152,0Zm72,95.89V132H52v12A76.09,76.09,0,0,0,124,219.89ZM204,132H132v87.89A76.09,76.09,0,0,0,204,144Z" }))
|
|
330
366
|
]
|
|
331
367
|
]);
|
|
332
368
|
|
|
333
369
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Bug.es.js
|
|
334
|
-
var
|
|
335
|
-
|
|
370
|
+
var e9 = o7.forwardRef((r32, t9) => /* @__PURE__ */ o7.createElement(w, { ref: t9, ...r32, weights: e8 }));
|
|
371
|
+
e9.displayName = "BugIcon";
|
|
336
372
|
|
|
337
373
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CaretRight.es.js
|
|
338
374
|
import * as t2 from "react";
|
|
339
375
|
|
|
340
376
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/CaretRight.es.js
|
|
341
|
-
import * as
|
|
377
|
+
import * as e10 from "react";
|
|
342
378
|
var t = /* @__PURE__ */ new Map([
|
|
343
379
|
[
|
|
344
380
|
"bold",
|
|
345
|
-
/* @__PURE__ */
|
|
381
|
+
/* @__PURE__ */ e10.createElement(e10.Fragment, null, /* @__PURE__ */ e10.createElement("path", { d: "M184.49,136.49l-80,80a12,12,0,0,1-17-17L159,128,87.51,56.49a12,12,0,1,1,17-17l80,80A12,12,0,0,1,184.49,136.49Z" }))
|
|
346
382
|
],
|
|
347
383
|
[
|
|
348
384
|
"duotone",
|
|
349
|
-
/* @__PURE__ */
|
|
385
|
+
/* @__PURE__ */ e10.createElement(e10.Fragment, null, /* @__PURE__ */ e10.createElement("path", { d: "M176,128,96,208V48Z", opacity: "0.2" }), /* @__PURE__ */ e10.createElement("path", { d: "M181.66,122.34l-80-80A8,8,0,0,0,88,48V208a8,8,0,0,0,13.66,5.66l80-80A8,8,0,0,0,181.66,122.34ZM104,188.69V67.31L164.69,128Z" }))
|
|
350
386
|
],
|
|
351
387
|
[
|
|
352
388
|
"fill",
|
|
353
|
-
/* @__PURE__ */
|
|
389
|
+
/* @__PURE__ */ e10.createElement(e10.Fragment, null, /* @__PURE__ */ e10.createElement("path", { d: "M181.66,133.66l-80,80A8,8,0,0,1,88,208V48a8,8,0,0,1,13.66-5.66l80,80A8,8,0,0,1,181.66,133.66Z" }))
|
|
354
390
|
],
|
|
355
391
|
[
|
|
356
392
|
"light",
|
|
357
|
-
/* @__PURE__ */
|
|
393
|
+
/* @__PURE__ */ e10.createElement(e10.Fragment, null, /* @__PURE__ */ e10.createElement("path", { d: "M180.24,132.24l-80,80a6,6,0,0,1-8.48-8.48L167.51,128,91.76,52.24a6,6,0,0,1,8.48-8.48l80,80A6,6,0,0,1,180.24,132.24Z" }))
|
|
358
394
|
],
|
|
359
395
|
[
|
|
360
396
|
"regular",
|
|
361
|
-
/* @__PURE__ */
|
|
397
|
+
/* @__PURE__ */ e10.createElement(e10.Fragment, null, /* @__PURE__ */ e10.createElement("path", { d: "M181.66,133.66l-80,80a8,8,0,0,1-11.32-11.32L164.69,128,90.34,53.66a8,8,0,0,1,11.32-11.32l80,80A8,8,0,0,1,181.66,133.66Z" }))
|
|
362
398
|
],
|
|
363
399
|
[
|
|
364
400
|
"thin",
|
|
365
|
-
/* @__PURE__ */
|
|
401
|
+
/* @__PURE__ */ e10.createElement(e10.Fragment, null, /* @__PURE__ */ e10.createElement("path", { d: "M178.83,130.83l-80,80a4,4,0,0,1-5.66-5.66L170.34,128,93.17,50.83a4,4,0,0,1,5.66-5.66l80,80A4,4,0,0,1,178.83,130.83Z" }))
|
|
366
402
|
]
|
|
367
403
|
]);
|
|
368
404
|
|
|
369
405
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/CaretRight.es.js
|
|
370
|
-
var
|
|
371
|
-
|
|
406
|
+
var e11 = t2.forwardRef((r32, o42) => /* @__PURE__ */ t2.createElement(w, { ref: o42, ...r32, weights: t }));
|
|
407
|
+
e11.displayName = "CaretRightIcon";
|
|
372
408
|
|
|
373
409
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ChatCircleDots.es.js
|
|
374
410
|
import * as t3 from "react";
|
|
375
411
|
|
|
376
412
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ChatCircleDots.es.js
|
|
377
|
-
import * as
|
|
378
|
-
var
|
|
413
|
+
import * as a8 from "react";
|
|
414
|
+
var e12 = /* @__PURE__ */ new Map([
|
|
379
415
|
[
|
|
380
416
|
"bold",
|
|
381
|
-
/* @__PURE__ */
|
|
417
|
+
/* @__PURE__ */ a8.createElement(a8.Fragment, null, /* @__PURE__ */ a8.createElement("path", { d: "M120,128a16,16,0,1,1-16-16A16,16,0,0,1,120,128Zm32-16a16,16,0,1,0,16,16A16,16,0,0,0,152,112Zm84,16A108,108,0,0,1,78.77,224.15L46.34,235A20,20,0,0,1,21,209.66l10.81-32.43A108,108,0,1,1,236,128Zm-24,0A84,84,0,1,0,55.27,170.06a12,12,0,0,1,1,9.81l-9.93,29.79,29.79-9.93a12.1,12.1,0,0,1,3.8-.62,12,12,0,0,1,6,1.62A84,84,0,0,0,212,128Z" }))
|
|
382
418
|
],
|
|
383
419
|
[
|
|
384
420
|
"duotone",
|
|
385
|
-
/* @__PURE__ */
|
|
421
|
+
/* @__PURE__ */ a8.createElement(a8.Fragment, null, /* @__PURE__ */ a8.createElement(
|
|
386
422
|
"path",
|
|
387
423
|
{
|
|
388
424
|
d: "M224,128A96,96,0,0,1,79.93,211.11h0L42.54,223.58a8,8,0,0,1-10.12-10.12l12.47-37.39h0A96,96,0,1,1,224,128Z",
|
|
389
425
|
opacity: "0.2"
|
|
390
426
|
}
|
|
391
|
-
), /* @__PURE__ */
|
|
427
|
+
), /* @__PURE__ */ a8.createElement("path", { d: "M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24Zm0,192a87.87,87.87,0,0,1-44.06-11.81,8,8,0,0,0-4-1.08,7.85,7.85,0,0,0-2.53.42L40,216,52.47,178.6a8,8,0,0,0-.66-6.54A88,88,0,1,1,128,216Zm12-88a12,12,0,1,1-12-12A12,12,0,0,1,140,128Zm-44,0a12,12,0,1,1-12-12A12,12,0,0,1,96,128Zm88,0a12,12,0,1,1-12-12A12,12,0,0,1,184,128Z" }))
|
|
392
428
|
],
|
|
393
429
|
[
|
|
394
430
|
"fill",
|
|
395
|
-
/* @__PURE__ */
|
|
431
|
+
/* @__PURE__ */ a8.createElement(a8.Fragment, null, /* @__PURE__ */ a8.createElement("path", { d: "M128,24A104,104,0,0,0,36.18,176.88L24.83,210.93a16,16,0,0,0,20.24,20.24l34.05-11.35A104,104,0,1,0,128,24ZM84,140a12,12,0,1,1,12-12A12,12,0,0,1,84,140Zm44,0a12,12,0,1,1,12-12A12,12,0,0,1,128,140Zm44,0a12,12,0,1,1,12-12A12,12,0,0,1,172,140Z" }))
|
|
396
432
|
],
|
|
397
433
|
[
|
|
398
434
|
"light",
|
|
399
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ a8.createElement(a8.Fragment, null, /* @__PURE__ */ a8.createElement("path", { d: "M138,128a10,10,0,1,1-10-10A10,10,0,0,1,138,128ZM84,118a10,10,0,1,0,10,10A10,10,0,0,0,84,118Zm88,0a10,10,0,1,0,10,10A10,10,0,0,0,172,118Zm58,10A102,102,0,0,1,79.31,217.65L44.44,229.27a14,14,0,0,1-17.71-17.71l11.62-34.87A102,102,0,1,1,230,128Zm-12,0A90,90,0,1,0,50.08,173.06a6,6,0,0,1,.5,4.91L38.12,215.35a2,2,0,0,0,2.53,2.53L78,205.42a6.2,6.2,0,0,1,1.9-.31,6.09,6.09,0,0,1,3,.81A90,90,0,0,0,218,128Z" }))
|
|
400
436
|
],
|
|
401
437
|
[
|
|
402
438
|
"regular",
|
|
403
|
-
/* @__PURE__ */
|
|
439
|
+
/* @__PURE__ */ a8.createElement(a8.Fragment, null, /* @__PURE__ */ a8.createElement("path", { d: "M140,128a12,12,0,1,1-12-12A12,12,0,0,1,140,128ZM84,116a12,12,0,1,0,12,12A12,12,0,0,0,84,116Zm88,0a12,12,0,1,0,12,12A12,12,0,0,0,172,116Zm60,12A104,104,0,0,1,79.12,219.82L45.07,231.17a16,16,0,0,1-20.24-20.24l11.35-34.05A104,104,0,1,1,232,128Zm-16,0A88,88,0,1,0,51.81,172.06a8,8,0,0,1,.66,6.54L40,216,77.4,203.53a7.85,7.85,0,0,1,2.53-.42,8,8,0,0,1,4,1.08A88,88,0,0,0,216,128Z" }))
|
|
404
440
|
],
|
|
405
441
|
[
|
|
406
442
|
"thin",
|
|
407
|
-
/* @__PURE__ */
|
|
443
|
+
/* @__PURE__ */ a8.createElement(a8.Fragment, null, /* @__PURE__ */ a8.createElement("path", { d: "M136,128a8,8,0,1,1-8-8A8,8,0,0,1,136,128Zm-52-8a8,8,0,1,0,8,8A8,8,0,0,0,84,120Zm88,0a8,8,0,1,0,8,8A8,8,0,0,0,172,120Zm56,8A100,100,0,0,1,79.5,215.47l-35.69,11.9a12,12,0,0,1-15.18-15.18l11.9-35.69A100,100,0,1,1,228,128Zm-8,0A92,92,0,1,0,48.35,174.07a4,4,0,0,1,.33,3.27L36.22,214.72a4,4,0,0,0,5.06,5.06l37.38-12.46a3.93,3.93,0,0,1,1.27-.21,4.05,4.05,0,0,1,2,.54A92,92,0,0,0,220,128Z" }))
|
|
408
444
|
]
|
|
409
445
|
]);
|
|
410
446
|
|
|
411
447
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ChatCircleDots.es.js
|
|
412
|
-
var
|
|
413
|
-
|
|
448
|
+
var o8 = t3.forwardRef((e54, r32) => /* @__PURE__ */ t3.createElement(w, { ref: r32, ...e54, weights: e12 }));
|
|
449
|
+
o8.displayName = "ChatCircleDotsIcon";
|
|
414
450
|
|
|
415
451
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Check.es.js
|
|
416
|
-
import * as
|
|
452
|
+
import * as e14 from "react";
|
|
417
453
|
|
|
418
454
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Check.es.js
|
|
419
|
-
import * as
|
|
420
|
-
var
|
|
455
|
+
import * as e13 from "react";
|
|
456
|
+
var a9 = /* @__PURE__ */ new Map([
|
|
421
457
|
[
|
|
422
458
|
"bold",
|
|
423
|
-
/* @__PURE__ */
|
|
459
|
+
/* @__PURE__ */ e13.createElement(e13.Fragment, null, /* @__PURE__ */ e13.createElement("path", { d: "M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z" }))
|
|
424
460
|
],
|
|
425
461
|
[
|
|
426
462
|
"duotone",
|
|
427
|
-
/* @__PURE__ */
|
|
463
|
+
/* @__PURE__ */ e13.createElement(e13.Fragment, null, /* @__PURE__ */ e13.createElement(
|
|
428
464
|
"path",
|
|
429
465
|
{
|
|
430
466
|
d: "M232,56V200a16,16,0,0,1-16,16H40a16,16,0,0,1-16-16V56A16,16,0,0,1,40,40H216A16,16,0,0,1,232,56Z",
|
|
431
467
|
opacity: "0.2"
|
|
432
468
|
}
|
|
433
|
-
), /* @__PURE__ */
|
|
469
|
+
), /* @__PURE__ */ e13.createElement("path", { d: "M205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z" }))
|
|
434
470
|
],
|
|
435
471
|
[
|
|
436
472
|
"fill",
|
|
437
|
-
/* @__PURE__ */
|
|
473
|
+
/* @__PURE__ */ e13.createElement(e13.Fragment, null, /* @__PURE__ */ e13.createElement("path", { d: "M216,40H40A16,16,0,0,0,24,56V200a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A16,16,0,0,0,216,40ZM205.66,85.66l-96,96a8,8,0,0,1-11.32,0l-40-40a8,8,0,0,1,11.32-11.32L104,164.69l90.34-90.35a8,8,0,0,1,11.32,11.32Z" }))
|
|
438
474
|
],
|
|
439
475
|
[
|
|
440
476
|
"light",
|
|
441
|
-
/* @__PURE__ */
|
|
477
|
+
/* @__PURE__ */ e13.createElement(e13.Fragment, null, /* @__PURE__ */ e13.createElement("path", { d: "M228.24,76.24l-128,128a6,6,0,0,1-8.48,0l-56-56a6,6,0,0,1,8.48-8.48L96,191.51,219.76,67.76a6,6,0,0,1,8.48,8.48Z" }))
|
|
442
478
|
],
|
|
443
479
|
[
|
|
444
480
|
"regular",
|
|
445
|
-
/* @__PURE__ */
|
|
481
|
+
/* @__PURE__ */ e13.createElement(e13.Fragment, null, /* @__PURE__ */ e13.createElement("path", { d: "M229.66,77.66l-128,128a8,8,0,0,1-11.32,0l-56-56a8,8,0,0,1,11.32-11.32L96,188.69,218.34,66.34a8,8,0,0,1,11.32,11.32Z" }))
|
|
446
482
|
],
|
|
447
483
|
[
|
|
448
484
|
"thin",
|
|
449
|
-
/* @__PURE__ */
|
|
485
|
+
/* @__PURE__ */ e13.createElement(e13.Fragment, null, /* @__PURE__ */ e13.createElement("path", { d: "M226.83,74.83l-128,128a4,4,0,0,1-5.66,0l-56-56a4,4,0,0,1,5.66-5.66L96,194.34,221.17,69.17a4,4,0,1,1,5.66,5.66Z" }))
|
|
450
486
|
]
|
|
451
487
|
]);
|
|
452
488
|
|
|
453
489
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Check.es.js
|
|
454
|
-
var
|
|
455
|
-
|
|
490
|
+
var o9 = e14.forwardRef((r32, t9) => /* @__PURE__ */ e14.createElement(w, { ref: t9, ...r32, weights: a9 }));
|
|
491
|
+
o9.displayName = "CheckIcon";
|
|
456
492
|
|
|
457
493
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/EnvelopeSimple.es.js
|
|
458
|
-
import * as
|
|
494
|
+
import * as e16 from "react";
|
|
459
495
|
|
|
460
496
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/EnvelopeSimple.es.js
|
|
461
|
-
import * as
|
|
462
|
-
var
|
|
497
|
+
import * as e15 from "react";
|
|
498
|
+
var a10 = /* @__PURE__ */ new Map([
|
|
463
499
|
[
|
|
464
500
|
"bold",
|
|
465
|
-
/* @__PURE__ */
|
|
501
|
+
/* @__PURE__ */ e15.createElement(e15.Fragment, null, /* @__PURE__ */ e15.createElement("path", { d: "M224,44H32A12,12,0,0,0,20,56V192a20,20,0,0,0,20,20H216a20,20,0,0,0,20-20V56A12,12,0,0,0,224,44ZM193.15,68,128,127.72,62.85,68ZM44,188V83.28l75.89,69.57a12,12,0,0,0,16.22,0L212,83.28V188Z" }))
|
|
466
502
|
],
|
|
467
503
|
[
|
|
468
504
|
"duotone",
|
|
469
|
-
/* @__PURE__ */
|
|
505
|
+
/* @__PURE__ */ e15.createElement(e15.Fragment, null, /* @__PURE__ */ e15.createElement("path", { d: "M224,56l-96,88L32,56Z", opacity: "0.2" }), /* @__PURE__ */ e15.createElement("path", { d: "M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z" }))
|
|
470
506
|
],
|
|
471
507
|
[
|
|
472
508
|
"fill",
|
|
473
|
-
/* @__PURE__ */
|
|
509
|
+
/* @__PURE__ */ e15.createElement(e15.Fragment, null, /* @__PURE__ */ e15.createElement("path", { d: "M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48Zm-8,144H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z" }))
|
|
474
510
|
],
|
|
475
511
|
[
|
|
476
512
|
"light",
|
|
477
|
-
/* @__PURE__ */
|
|
513
|
+
/* @__PURE__ */ e15.createElement(e15.Fragment, null, /* @__PURE__ */ e15.createElement("path", { d: "M224,50H32a6,6,0,0,0-6,6V192a14,14,0,0,0,14,14H216a14,14,0,0,0,14-14V56A6,6,0,0,0,224,50ZM208.58,62,128,135.86,47.42,62ZM216,194H40a2,2,0,0,1-2-2V69.64l86,78.78a6,6,0,0,0,8.1,0L218,69.64V192A2,2,0,0,1,216,194Z" }))
|
|
478
514
|
],
|
|
479
515
|
[
|
|
480
516
|
"regular",
|
|
481
|
-
/* @__PURE__ */
|
|
517
|
+
/* @__PURE__ */ e15.createElement(e15.Fragment, null, /* @__PURE__ */ e15.createElement("path", { d: "M224,48H32a8,8,0,0,0-8,8V192a16,16,0,0,0,16,16H216a16,16,0,0,0,16-16V56A8,8,0,0,0,224,48ZM203.43,64,128,133.15,52.57,64ZM216,192H40V74.19l82.59,75.71a8,8,0,0,0,10.82,0L216,74.19V192Z" }))
|
|
482
518
|
],
|
|
483
519
|
[
|
|
484
520
|
"thin",
|
|
485
|
-
/* @__PURE__ */
|
|
521
|
+
/* @__PURE__ */ e15.createElement(e15.Fragment, null, /* @__PURE__ */ e15.createElement("path", { d: "M224,52H32a4,4,0,0,0-4,4V192a12,12,0,0,0,12,12H216a12,12,0,0,0,12-12V56A4,4,0,0,0,224,52Zm-10.28,8L128,138.57,42.28,60ZM216,196H40a4,4,0,0,1-4-4V65.09L125.3,147a4,4,0,0,0,5.4,0L220,65.09V192A4,4,0,0,1,216,196Z" }))
|
|
486
522
|
]
|
|
487
523
|
]);
|
|
488
524
|
|
|
489
525
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/EnvelopeSimple.es.js
|
|
490
|
-
var
|
|
491
|
-
|
|
526
|
+
var o10 = e16.forwardRef((m5, p3) => /* @__PURE__ */ e16.createElement(w, { ref: p3, ...m5, weights: a10 }));
|
|
527
|
+
o10.displayName = "EnvelopeSimpleIcon";
|
|
492
528
|
|
|
493
529
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/File.es.js
|
|
494
|
-
import * as
|
|
530
|
+
import * as e18 from "react";
|
|
495
531
|
|
|
496
532
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/File.es.js
|
|
497
|
-
import * as
|
|
498
|
-
var
|
|
533
|
+
import * as e17 from "react";
|
|
534
|
+
var a11 = /* @__PURE__ */ new Map([
|
|
499
535
|
[
|
|
500
536
|
"bold",
|
|
501
|
-
/* @__PURE__ */
|
|
537
|
+
/* @__PURE__ */ e17.createElement(e17.Fragment, null, /* @__PURE__ */ e17.createElement("path", { d: "M216.49,79.52l-56-56A12,12,0,0,0,152,20H56A20,20,0,0,0,36,40V216a20,20,0,0,0,20,20H200a20,20,0,0,0,20-20V88A12,12,0,0,0,216.49,79.52ZM160,57l23,23H160ZM60,212V44h76V92a12,12,0,0,0,12,12h48V212Z" }))
|
|
502
538
|
],
|
|
503
539
|
[
|
|
504
540
|
"duotone",
|
|
505
|
-
/* @__PURE__ */
|
|
541
|
+
/* @__PURE__ */ e17.createElement(e17.Fragment, null, /* @__PURE__ */ e17.createElement("path", { d: "M208,88H152V32Z", opacity: "0.2" }), /* @__PURE__ */ e17.createElement("path", { d: "M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z" }))
|
|
506
542
|
],
|
|
507
543
|
[
|
|
508
544
|
"fill",
|
|
509
|
-
/* @__PURE__ */
|
|
545
|
+
/* @__PURE__ */ e17.createElement(e17.Fragment, null, /* @__PURE__ */ e17.createElement("path", { d: "M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM152,88V44l44,44Z" }))
|
|
510
546
|
],
|
|
511
547
|
[
|
|
512
548
|
"light",
|
|
513
|
-
/* @__PURE__ */
|
|
549
|
+
/* @__PURE__ */ e17.createElement(e17.Fragment, null, /* @__PURE__ */ e17.createElement("path", { d: "M212.24,83.76l-56-56A6,6,0,0,0,152,26H56A14,14,0,0,0,42,40V216a14,14,0,0,0,14,14H200a14,14,0,0,0,14-14V88A6,6,0,0,0,212.24,83.76ZM158,46.48,193.52,82H158ZM200,218H56a2,2,0,0,1-2-2V40a2,2,0,0,1,2-2h90V88a6,6,0,0,0,6,6h50V216A2,2,0,0,1,200,218Z" }))
|
|
514
550
|
],
|
|
515
551
|
[
|
|
516
552
|
"regular",
|
|
517
|
-
/* @__PURE__ */
|
|
553
|
+
/* @__PURE__ */ e17.createElement(e17.Fragment, null, /* @__PURE__ */ e17.createElement("path", { d: "M213.66,82.34l-56-56A8,8,0,0,0,152,24H56A16,16,0,0,0,40,40V216a16,16,0,0,0,16,16H200a16,16,0,0,0,16-16V88A8,8,0,0,0,213.66,82.34ZM160,51.31,188.69,80H160ZM200,216H56V40h88V88a8,8,0,0,0,8,8h48V216Z" }))
|
|
518
554
|
],
|
|
519
555
|
[
|
|
520
556
|
"thin",
|
|
521
|
-
/* @__PURE__ */
|
|
557
|
+
/* @__PURE__ */ e17.createElement(e17.Fragment, null, /* @__PURE__ */ e17.createElement("path", { d: "M210.83,85.17l-56-56A4,4,0,0,0,152,28H56A12,12,0,0,0,44,40V216a12,12,0,0,0,12,12H200a12,12,0,0,0,12-12V88A4,4,0,0,0,210.83,85.17ZM156,41.65,198.34,84H156ZM200,220H56a4,4,0,0,1-4-4V40a4,4,0,0,1,4-4h92V88a4,4,0,0,0,4,4h52V216A4,4,0,0,1,200,220Z" }))
|
|
522
558
|
]
|
|
523
559
|
]);
|
|
524
560
|
|
|
525
561
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/File.es.js
|
|
526
|
-
var
|
|
527
|
-
|
|
562
|
+
var o11 = e18.forwardRef((r32, t9) => /* @__PURE__ */ e18.createElement(w, { ref: t9, ...r32, weights: a11 }));
|
|
563
|
+
o11.displayName = "FileIcon";
|
|
528
564
|
|
|
529
565
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ImageSquare.es.js
|
|
530
|
-
import * as
|
|
566
|
+
import * as e20 from "react";
|
|
531
567
|
|
|
532
568
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/ImageSquare.es.js
|
|
533
|
-
import * as
|
|
534
|
-
var
|
|
569
|
+
import * as a12 from "react";
|
|
570
|
+
var e19 = /* @__PURE__ */ new Map([
|
|
535
571
|
[
|
|
536
572
|
"bold",
|
|
537
|
-
/* @__PURE__ */
|
|
573
|
+
/* @__PURE__ */ a12.createElement(a12.Fragment, null, /* @__PURE__ */ a12.createElement("path", { d: "M208,28H48A20,20,0,0,0,28,48V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V48A20,20,0,0,0,208,28Zm-4,24v63.72L186.14,97.86a20,20,0,0,0-28.28,0L52,203.72V52ZM85.66,204,172,117.66l32,32V204ZM76,96a20,20,0,1,1,20,20A20,20,0,0,1,76,96Z" }))
|
|
538
574
|
],
|
|
539
575
|
[
|
|
540
576
|
"duotone",
|
|
541
|
-
/* @__PURE__ */
|
|
577
|
+
/* @__PURE__ */ a12.createElement(a12.Fragment, null, /* @__PURE__ */ a12.createElement(
|
|
542
578
|
"path",
|
|
543
579
|
{
|
|
544
580
|
d: "M208,40H48a8,8,0,0,0-8,8V208a8,8,0,0,0,8,8h8.69L166.34,106.34a8,8,0,0,1,11.32,0L216,144.69V48A8,8,0,0,0,208,40ZM96,112a16,16,0,1,1,16-16A16,16,0,0,1,96,112Z",
|
|
545
581
|
opacity: "0.2"
|
|
546
582
|
}
|
|
547
|
-
), /* @__PURE__ */
|
|
583
|
+
), /* @__PURE__ */ a12.createElement("path", { d: "M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z" }))
|
|
548
584
|
],
|
|
549
585
|
[
|
|
550
586
|
"fill",
|
|
551
|
-
/* @__PURE__ */
|
|
587
|
+
/* @__PURE__ */ a12.createElement(a12.Fragment, null, /* @__PURE__ */ a12.createElement("path", { d: "M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM80,96a16,16,0,1,1,16,16A16,16,0,0,1,80,96Z" }))
|
|
552
588
|
],
|
|
553
589
|
[
|
|
554
590
|
"light",
|
|
555
|
-
/* @__PURE__ */
|
|
591
|
+
/* @__PURE__ */ a12.createElement(a12.Fragment, null, /* @__PURE__ */ a12.createElement("path", { d: "M208,34H48A14,14,0,0,0,34,48V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V48A14,14,0,0,0,208,34ZM46,208V48a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2v82.2l-28.1-28.1a14,14,0,0,0-19.8,0L54.2,210H48A2,2,0,0,1,46,208Zm162,2H71.17l99.41-99.41a2,2,0,0,1,2.83,0L210,147.17V208A2,2,0,0,1,208,210ZM96,118A22,22,0,1,0,74,96,22,22,0,0,0,96,118Zm0-32A10,10,0,1,1,86,96,10,10,0,0,1,96,86Z" }))
|
|
556
592
|
],
|
|
557
593
|
[
|
|
558
594
|
"regular",
|
|
559
|
-
/* @__PURE__ */
|
|
595
|
+
/* @__PURE__ */ a12.createElement(a12.Fragment, null, /* @__PURE__ */ a12.createElement("path", { d: "M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM48,48H208v77.38l-24.69-24.7a16,16,0,0,0-22.62,0L53.37,208H48ZM208,208H76l96-96,36,36v60ZM96,120A24,24,0,1,0,72,96,24,24,0,0,0,96,120Zm0-32a8,8,0,1,1-8,8A8,8,0,0,1,96,88Z" }))
|
|
560
596
|
],
|
|
561
597
|
[
|
|
562
598
|
"thin",
|
|
563
|
-
/* @__PURE__ */
|
|
599
|
+
/* @__PURE__ */ a12.createElement(a12.Fragment, null, /* @__PURE__ */ a12.createElement("path", { d: "M208,36H48A12,12,0,0,0,36,48V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V48A12,12,0,0,0,208,36ZM44,208V48a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4v87l-31.51-31.52a12,12,0,0,0-17,0L55,212H48A4,4,0,0,1,44,208Zm164,4H66.34L169.17,109.17a4,4,0,0,1,5.66,0L212,146.34V208A4,4,0,0,1,208,212ZM96,116A20,20,0,1,0,76,96,20,20,0,0,0,96,116Zm0-32A12,12,0,1,1,84,96,12,12,0,0,1,96,84Z" }))
|
|
564
600
|
]
|
|
565
601
|
]);
|
|
566
602
|
|
|
567
603
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/ImageSquare.es.js
|
|
568
|
-
var
|
|
569
|
-
|
|
604
|
+
var a13 = e20.forwardRef((r32, o42) => /* @__PURE__ */ e20.createElement(w, { ref: o42, ...r32, weights: e19 }));
|
|
605
|
+
a13.displayName = "ImageSquareIcon";
|
|
570
606
|
|
|
571
607
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Lightbulb.es.js
|
|
572
608
|
import * as t4 from "react";
|
|
573
609
|
|
|
574
610
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Lightbulb.es.js
|
|
575
|
-
import * as
|
|
576
|
-
var
|
|
611
|
+
import * as a14 from "react";
|
|
612
|
+
var e21 = /* @__PURE__ */ new Map([
|
|
577
613
|
[
|
|
578
614
|
"bold",
|
|
579
|
-
/* @__PURE__ */
|
|
615
|
+
/* @__PURE__ */ a14.createElement(a14.Fragment, null, /* @__PURE__ */ a14.createElement("path", { d: "M180,232a12,12,0,0,1-12,12H88a12,12,0,0,1,0-24h80A12,12,0,0,1,180,232Zm40-128a91.51,91.51,0,0,1-35.17,72.35A12.26,12.26,0,0,0,180,186v2a20,20,0,0,1-20,20H96a20,20,0,0,1-20-20v-2a12,12,0,0,0-4.7-9.51A91.57,91.57,0,0,1,36,104.52C35.73,54.69,76,13.2,125.79,12A92,92,0,0,1,220,104Zm-24,0a68,68,0,0,0-69.65-68C89.56,36.88,59.8,67.55,60,104.38a67.71,67.71,0,0,0,26.1,53.19A35.87,35.87,0,0,1,100,184h56.1A36.13,36.13,0,0,1,170,157.49,67.68,67.68,0,0,0,196,104Zm-20.07-5.32a48.5,48.5,0,0,0-31.91-40,12,12,0,0,0-8,22.62,24.31,24.31,0,0,1,16.09,20,12,12,0,0,0,23.86-2.64Z" }))
|
|
580
616
|
],
|
|
581
617
|
[
|
|
582
618
|
"duotone",
|
|
583
|
-
/* @__PURE__ */
|
|
619
|
+
/* @__PURE__ */ a14.createElement(a14.Fragment, null, /* @__PURE__ */ a14.createElement(
|
|
584
620
|
"path",
|
|
585
621
|
{
|
|
586
622
|
d: "M208,104a79.86,79.86,0,0,1-30.59,62.92A24.29,24.29,0,0,0,168,186v6a8,8,0,0,1-8,8H96a8,8,0,0,1-8-8v-6a24.11,24.11,0,0,0-9.3-19A79.87,79.87,0,0,1,48,104.45C47.76,61.09,82.72,25,126.07,24A80,80,0,0,1,208,104Z",
|
|
587
623
|
opacity: "0.2"
|
|
588
624
|
}
|
|
589
|
-
), /* @__PURE__ */
|
|
625
|
+
), /* @__PURE__ */ a14.createElement("path", { d: "M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z" }))
|
|
590
626
|
],
|
|
591
627
|
[
|
|
592
628
|
"fill",
|
|
593
|
-
/* @__PURE__ */
|
|
629
|
+
/* @__PURE__ */ a14.createElement(a14.Fragment, null, /* @__PURE__ */ a14.createElement("path", { d: "M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-32.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z" }))
|
|
594
630
|
],
|
|
595
631
|
[
|
|
596
632
|
"light",
|
|
597
|
-
/* @__PURE__ */
|
|
633
|
+
/* @__PURE__ */ a14.createElement(a14.Fragment, null, /* @__PURE__ */ a14.createElement("path", { d: "M174,232a6,6,0,0,1-6,6H88a6,6,0,0,1,0-12h80A6,6,0,0,1,174,232Zm40-128a85.56,85.56,0,0,1-32.88,67.64A18.23,18.23,0,0,0,174,186v6a14,14,0,0,1-14,14H96a14,14,0,0,1-14-14v-6a18,18,0,0,0-7-14.23h0a85.59,85.59,0,0,1-33-67.24C41.74,57.91,79.39,19.12,125.93,18A86,86,0,0,1,214,104Zm-12,0a74,74,0,0,0-75.79-74C86.17,31,53.78,64.34,54,104.42a73.67,73.67,0,0,0,28.4,57.87A29.92,29.92,0,0,1,94,186v6a2,2,0,0,0,2,2h64a2,2,0,0,0,2-2v-6a30.18,30.18,0,0,1,11.7-23.78A73.59,73.59,0,0,0,202,104Zm-20.08-9A55.58,55.58,0,0,0,137,50.08a6,6,0,1,0-2,11.84C152.38,64.84,167.13,79.6,170.08,97a6,6,0,0,0,5.91,5,6.87,6.87,0,0,0,1-.08A6,6,0,0,0,181.92,95Z" }))
|
|
598
634
|
],
|
|
599
635
|
[
|
|
600
636
|
"regular",
|
|
601
|
-
/* @__PURE__ */
|
|
637
|
+
/* @__PURE__ */ a14.createElement(a14.Fragment, null, /* @__PURE__ */ a14.createElement("path", { d: "M176,232a8,8,0,0,1-8,8H88a8,8,0,0,1,0-16h80A8,8,0,0,1,176,232Zm40-128a87.55,87.55,0,0,1-33.64,69.21A16.24,16.24,0,0,0,176,186v6a16,16,0,0,1-16,16H96a16,16,0,0,1-16-16v-6a16,16,0,0,0-6.23-12.66A87.59,87.59,0,0,1,40,104.49C39.74,56.83,78.26,17.14,125.88,16A88,88,0,0,1,216,104Zm-16,0a72,72,0,0,0-73.74-72c-39,.92-70.47,33.39-70.26,72.39a71.65,71.65,0,0,0,27.64,56.3A32,32,0,0,1,96,186v6h64v-6a32.15,32.15,0,0,1,12.47-25.35A71.65,71.65,0,0,0,200,104Zm-16.11-9.34a57.6,57.6,0,0,0-46.56-46.55,8,8,0,0,0-2.66,15.78c16.57,2.79,30.63,16.85,33.44,33.45A8,8,0,0,0,176,104a9,9,0,0,0,1.35-.11A8,8,0,0,0,183.89,94.66Z" }))
|
|
602
638
|
],
|
|
603
639
|
[
|
|
604
640
|
"thin",
|
|
605
|
-
/* @__PURE__ */
|
|
641
|
+
/* @__PURE__ */ a14.createElement(a14.Fragment, null, /* @__PURE__ */ a14.createElement("path", { d: "M172,232a4,4,0,0,1-4,4H88a4,4,0,0,1,0-8h80A4,4,0,0,1,172,232Zm40-128a83.59,83.59,0,0,1-32.11,66.06A20.2,20.2,0,0,0,172,186v6a12,12,0,0,1-12,12H96a12,12,0,0,1-12-12v-6a20,20,0,0,0-7.76-15.81A83.58,83.58,0,0,1,44,104.47C43.75,59,80.52,21.09,126,20a84,84,0,0,1,86,84Zm-8,0a76,76,0,0,0-77.83-76C85,29,51.77,63.27,52,104.43a75.62,75.62,0,0,0,29.17,59.43A28,28,0,0,1,92,186v6a4,4,0,0,0,4,4h64a4,4,0,0,0,4-4v-6a28.14,28.14,0,0,1,10.94-22.2A75.62,75.62,0,0,0,204,104ZM136.66,52.06a4,4,0,0,0-1.32,7.88C153.53,63,169,78.45,172.06,96.67A4,4,0,0,0,176,100a3.88,3.88,0,0,0,.67-.06,4,4,0,0,0,3.27-4.61A53.51,53.51,0,0,0,136.66,52.06Z" }))
|
|
606
642
|
]
|
|
607
643
|
]);
|
|
608
644
|
|
|
609
645
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Lightbulb.es.js
|
|
610
|
-
var
|
|
611
|
-
|
|
646
|
+
var o12 = t4.forwardRef((e54, r32) => /* @__PURE__ */ t4.createElement(w, { ref: r32, ...e54, weights: e21 }));
|
|
647
|
+
o12.displayName = "LightbulbIcon";
|
|
612
648
|
|
|
613
649
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/LockSimple.es.js
|
|
614
|
-
import * as
|
|
650
|
+
import * as o13 from "react";
|
|
615
651
|
|
|
616
652
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/LockSimple.es.js
|
|
617
|
-
import * as
|
|
618
|
-
var
|
|
653
|
+
import * as a15 from "react";
|
|
654
|
+
var e22 = /* @__PURE__ */ new Map([
|
|
619
655
|
[
|
|
620
656
|
"bold",
|
|
621
|
-
/* @__PURE__ */
|
|
657
|
+
/* @__PURE__ */ a15.createElement(a15.Fragment, null, /* @__PURE__ */ a15.createElement("path", { d: "M208,76H180V56A52,52,0,0,0,76,56V76H48A20,20,0,0,0,28,96V208a20,20,0,0,0,20,20H208a20,20,0,0,0,20-20V96A20,20,0,0,0,208,76ZM100,56a28,28,0,0,1,56,0V76H100ZM204,204H52V100H204Z" }))
|
|
622
658
|
],
|
|
623
659
|
[
|
|
624
660
|
"duotone",
|
|
625
|
-
/* @__PURE__ */
|
|
661
|
+
/* @__PURE__ */ a15.createElement(a15.Fragment, null, /* @__PURE__ */ a15.createElement(
|
|
626
662
|
"path",
|
|
627
663
|
{
|
|
628
664
|
d: "M216,96V208a8,8,0,0,1-8,8H48a8,8,0,0,1-8-8V96a8,8,0,0,1,8-8H208A8,8,0,0,1,216,96Z",
|
|
629
665
|
opacity: "0.2"
|
|
630
666
|
}
|
|
631
|
-
), /* @__PURE__ */
|
|
667
|
+
), /* @__PURE__ */ a15.createElement("path", { d: "M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z" }))
|
|
632
668
|
],
|
|
633
669
|
[
|
|
634
670
|
"fill",
|
|
635
|
-
/* @__PURE__ */
|
|
671
|
+
/* @__PURE__ */ a15.createElement(a15.Fragment, null, /* @__PURE__ */ a15.createElement("path", { d: "M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96Z" }))
|
|
636
672
|
],
|
|
637
673
|
[
|
|
638
674
|
"light",
|
|
639
|
-
/* @__PURE__ */
|
|
675
|
+
/* @__PURE__ */ a15.createElement(a15.Fragment, null, /* @__PURE__ */ a15.createElement("path", { d: "M208,82H174V56a46,46,0,0,0-92,0V82H48A14,14,0,0,0,34,96V208a14,14,0,0,0,14,14H208a14,14,0,0,0,14-14V96A14,14,0,0,0,208,82ZM94,56a34,34,0,0,1,68,0V82H94ZM210,208a2,2,0,0,1-2,2H48a2,2,0,0,1-2-2V96a2,2,0,0,1,2-2H208a2,2,0,0,1,2,2Z" }))
|
|
640
676
|
],
|
|
641
677
|
[
|
|
642
678
|
"regular",
|
|
643
|
-
/* @__PURE__ */
|
|
679
|
+
/* @__PURE__ */ a15.createElement(a15.Fragment, null, /* @__PURE__ */ a15.createElement("path", { d: "M208,80H176V56a48,48,0,0,0-96,0V80H48A16,16,0,0,0,32,96V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V96A16,16,0,0,0,208,80ZM96,56a32,32,0,0,1,64,0V80H96ZM208,208H48V96H208V208Z" }))
|
|
644
680
|
],
|
|
645
681
|
[
|
|
646
682
|
"thin",
|
|
647
|
-
/* @__PURE__ */
|
|
683
|
+
/* @__PURE__ */ a15.createElement(a15.Fragment, null, /* @__PURE__ */ a15.createElement("path", { d: "M208,84H172V56a44,44,0,0,0-88,0V84H48A12,12,0,0,0,36,96V208a12,12,0,0,0,12,12H208a12,12,0,0,0,12-12V96A12,12,0,0,0,208,84ZM92,56a36,36,0,0,1,72,0V84H92ZM212,208a4,4,0,0,1-4,4H48a4,4,0,0,1-4-4V96a4,4,0,0,1,4-4H208a4,4,0,0,1,4,4Z" }))
|
|
648
684
|
]
|
|
649
685
|
]);
|
|
650
686
|
|
|
651
687
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/LockSimple.es.js
|
|
652
|
-
var
|
|
653
|
-
|
|
688
|
+
var e23 = o13.forwardRef((m5, r32) => /* @__PURE__ */ o13.createElement(w, { ref: r32, ...m5, weights: e22 }));
|
|
689
|
+
e23.displayName = "LockSimpleIcon";
|
|
654
690
|
|
|
655
691
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Play.es.js
|
|
656
|
-
import * as
|
|
692
|
+
import * as o14 from "react";
|
|
657
693
|
|
|
658
694
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Play.es.js
|
|
659
|
-
import * as
|
|
660
|
-
var
|
|
695
|
+
import * as e24 from "react";
|
|
696
|
+
var a16 = /* @__PURE__ */ new Map([
|
|
661
697
|
[
|
|
662
698
|
"bold",
|
|
663
|
-
/* @__PURE__ */
|
|
699
|
+
/* @__PURE__ */ e24.createElement(e24.Fragment, null, /* @__PURE__ */ e24.createElement("path", { d: "M234.49,111.07,90.41,22.94A20,20,0,0,0,60,39.87V216.13a20,20,0,0,0,30.41,16.93l144.08-88.13a19.82,19.82,0,0,0,0-33.86ZM84,208.85V47.15L216.16,128Z" }))
|
|
664
700
|
],
|
|
665
701
|
[
|
|
666
702
|
"duotone",
|
|
667
|
-
/* @__PURE__ */
|
|
703
|
+
/* @__PURE__ */ e24.createElement(e24.Fragment, null, /* @__PURE__ */ e24.createElement(
|
|
668
704
|
"path",
|
|
669
705
|
{
|
|
670
706
|
d: "M228.23,134.69,84.15,222.81A8,8,0,0,1,72,216.12V39.88a8,8,0,0,1,12.15-6.69l144.08,88.12A7.82,7.82,0,0,1,228.23,134.69Z",
|
|
671
707
|
opacity: "0.2"
|
|
672
708
|
}
|
|
673
|
-
), /* @__PURE__ */
|
|
709
|
+
), /* @__PURE__ */ e24.createElement("path", { d: "M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z" }))
|
|
674
710
|
],
|
|
675
711
|
[
|
|
676
712
|
"fill",
|
|
677
|
-
/* @__PURE__ */
|
|
713
|
+
/* @__PURE__ */ e24.createElement(e24.Fragment, null, /* @__PURE__ */ e24.createElement("path", { d: "M240,128a15.74,15.74,0,0,1-7.6,13.51L88.32,229.65a16,16,0,0,1-16.2.3A15.86,15.86,0,0,1,64,216.13V39.87a15.86,15.86,0,0,1,8.12-13.82,16,16,0,0,1,16.2.3L232.4,114.49A15.74,15.74,0,0,1,240,128Z" }))
|
|
678
714
|
],
|
|
679
715
|
[
|
|
680
716
|
"light",
|
|
681
|
-
/* @__PURE__ */
|
|
717
|
+
/* @__PURE__ */ e24.createElement(e24.Fragment, null, /* @__PURE__ */ e24.createElement("path", { d: "M231.36,116.19,87.28,28.06a14,14,0,0,0-14.18-.27A13.69,13.69,0,0,0,66,39.87V216.13a13.69,13.69,0,0,0,7.1,12.08,14,14,0,0,0,14.18-.27l144.08-88.13a13.82,13.82,0,0,0,0-23.62Zm-6.26,13.38L81,217.7a2,2,0,0,1-2.06,0,1.78,1.78,0,0,1-1-1.61V39.87a1.78,1.78,0,0,1,1-1.61A2.06,2.06,0,0,1,80,38a2,2,0,0,1,1,.31L225.1,126.43a1.82,1.82,0,0,1,0,3.14Z" }))
|
|
682
718
|
],
|
|
683
719
|
[
|
|
684
720
|
"regular",
|
|
685
|
-
/* @__PURE__ */
|
|
721
|
+
/* @__PURE__ */ e24.createElement(e24.Fragment, null, /* @__PURE__ */ e24.createElement("path", { d: "M232.4,114.49,88.32,26.35a16,16,0,0,0-16.2-.3A15.86,15.86,0,0,0,64,39.87V216.13A15.94,15.94,0,0,0,80,232a16.07,16.07,0,0,0,8.36-2.35L232.4,141.51a15.81,15.81,0,0,0,0-27ZM80,215.94V40l143.83,88Z" }))
|
|
686
722
|
],
|
|
687
723
|
[
|
|
688
724
|
"thin",
|
|
689
|
-
/* @__PURE__ */
|
|
725
|
+
/* @__PURE__ */ e24.createElement(e24.Fragment, null, /* @__PURE__ */ e24.createElement("path", { d: "M230.32,117.9,86.24,29.79a11.91,11.91,0,0,0-12.17-.23A11.71,11.71,0,0,0,68,39.89V216.11a11.71,11.71,0,0,0,6.07,10.33,11.91,11.91,0,0,0,12.17-.23L230.32,138.1a11.82,11.82,0,0,0,0-20.2Zm-4.18,13.37L82.06,219.39a4,4,0,0,1-4.07.07,3.77,3.77,0,0,1-2-3.35V39.89a3.77,3.77,0,0,1,2-3.35,4,4,0,0,1,4.07.07l144.08,88.12a3.8,3.8,0,0,1,0,6.54Z" }))
|
|
690
726
|
]
|
|
691
727
|
]);
|
|
692
728
|
|
|
693
729
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Play.es.js
|
|
694
|
-
var
|
|
695
|
-
|
|
730
|
+
var a17 = o14.forwardRef((e54, r32) => /* @__PURE__ */ o14.createElement(w, { ref: r32, ...e54, weights: a16 }));
|
|
731
|
+
a17.displayName = "PlayIcon";
|
|
696
732
|
|
|
697
733
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Plus.es.js
|
|
698
|
-
import * as
|
|
734
|
+
import * as o15 from "react";
|
|
699
735
|
|
|
700
736
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Plus.es.js
|
|
701
|
-
import * as
|
|
702
|
-
var
|
|
737
|
+
import * as e25 from "react";
|
|
738
|
+
var a18 = /* @__PURE__ */ new Map([
|
|
703
739
|
[
|
|
704
740
|
"bold",
|
|
705
|
-
/* @__PURE__ */
|
|
741
|
+
/* @__PURE__ */ e25.createElement(e25.Fragment, null, /* @__PURE__ */ e25.createElement("path", { d: "M228,128a12,12,0,0,1-12,12H140v76a12,12,0,0,1-24,0V140H40a12,12,0,0,1,0-24h76V40a12,12,0,0,1,24,0v76h76A12,12,0,0,1,228,128Z" }))
|
|
706
742
|
],
|
|
707
743
|
[
|
|
708
744
|
"duotone",
|
|
709
|
-
/* @__PURE__ */
|
|
745
|
+
/* @__PURE__ */ e25.createElement(e25.Fragment, null, /* @__PURE__ */ e25.createElement(
|
|
710
746
|
"path",
|
|
711
747
|
{
|
|
712
748
|
d: "M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z",
|
|
713
749
|
opacity: "0.2"
|
|
714
750
|
}
|
|
715
|
-
), /* @__PURE__ */
|
|
751
|
+
), /* @__PURE__ */ e25.createElement("path", { d: "M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" }))
|
|
716
752
|
],
|
|
717
753
|
[
|
|
718
754
|
"fill",
|
|
719
|
-
/* @__PURE__ */
|
|
755
|
+
/* @__PURE__ */ e25.createElement(e25.Fragment, null, /* @__PURE__ */ e25.createElement("path", { d: "M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM184,136H136v48a8,8,0,0,1-16,0V136H72a8,8,0,0,1,0-16h48V72a8,8,0,0,1,16,0v48h48a8,8,0,0,1,0,16Z" }))
|
|
720
756
|
],
|
|
721
757
|
[
|
|
722
758
|
"light",
|
|
723
|
-
/* @__PURE__ */
|
|
759
|
+
/* @__PURE__ */ e25.createElement(e25.Fragment, null, /* @__PURE__ */ e25.createElement("path", { d: "M222,128a6,6,0,0,1-6,6H134v82a6,6,0,0,1-12,0V134H40a6,6,0,0,1,0-12h82V40a6,6,0,0,1,12,0v82h82A6,6,0,0,1,222,128Z" }))
|
|
724
760
|
],
|
|
725
761
|
[
|
|
726
762
|
"regular",
|
|
727
|
-
/* @__PURE__ */
|
|
763
|
+
/* @__PURE__ */ e25.createElement(e25.Fragment, null, /* @__PURE__ */ e25.createElement("path", { d: "M224,128a8,8,0,0,1-8,8H136v80a8,8,0,0,1-16,0V136H40a8,8,0,0,1,0-16h80V40a8,8,0,0,1,16,0v80h80A8,8,0,0,1,224,128Z" }))
|
|
728
764
|
],
|
|
729
765
|
[
|
|
730
766
|
"thin",
|
|
731
|
-
/* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ e25.createElement(e25.Fragment, null, /* @__PURE__ */ e25.createElement("path", { d: "M220,128a4,4,0,0,1-4,4H132v84a4,4,0,0,1-8,0V132H40a4,4,0,0,1,0-8h84V40a4,4,0,0,1,8,0v84h84A4,4,0,0,1,220,128Z" }))
|
|
732
768
|
]
|
|
733
769
|
]);
|
|
734
770
|
|
|
735
771
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Plus.es.js
|
|
736
|
-
var
|
|
737
|
-
|
|
772
|
+
var e26 = o15.forwardRef((r32, s4) => /* @__PURE__ */ o15.createElement(w, { ref: s4, ...r32, weights: a18 }));
|
|
773
|
+
e26.displayName = "PlusIcon";
|
|
738
774
|
|
|
739
775
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Sparkle.es.js
|
|
740
|
-
import * as
|
|
776
|
+
import * as e27 from "react";
|
|
741
777
|
|
|
742
778
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Sparkle.es.js
|
|
743
|
-
import * as
|
|
779
|
+
import * as a19 from "react";
|
|
744
780
|
var l = /* @__PURE__ */ new Map([
|
|
745
781
|
[
|
|
746
782
|
"bold",
|
|
747
|
-
/* @__PURE__ */
|
|
783
|
+
/* @__PURE__ */ a19.createElement(a19.Fragment, null, /* @__PURE__ */ a19.createElement("path", { d: "M199,125.31l-49.88-18.39L130.69,57a19.92,19.92,0,0,0-37.38,0L74.92,106.92,25,125.31a19.92,19.92,0,0,0,0,37.38l49.88,18.39L93.31,231a19.92,19.92,0,0,0,37.38,0l18.39-49.88L199,162.69a19.92,19.92,0,0,0,0-37.38Zm-63.38,35.16a12,12,0,0,0-7.11,7.11L112,212.28l-16.47-44.7a12,12,0,0,0-7.11-7.11L43.72,144l44.7-16.47a12,12,0,0,0,7.11-7.11L112,75.72l16.47,44.7a12,12,0,0,0,7.11,7.11L180.28,144ZM140,40a12,12,0,0,1,12-12h12V16a12,12,0,0,1,24,0V28h12a12,12,0,0,1,0,24H188V64a12,12,0,0,1-24,0V52H152A12,12,0,0,1,140,40ZM252,88a12,12,0,0,1-12,12h-4v4a12,12,0,0,1-24,0v-4h-4a12,12,0,0,1,0-24h4V72a12,12,0,0,1,24,0v4h4A12,12,0,0,1,252,88Z" }))
|
|
748
784
|
],
|
|
749
785
|
[
|
|
750
786
|
"duotone",
|
|
751
|
-
/* @__PURE__ */
|
|
787
|
+
/* @__PURE__ */ a19.createElement(a19.Fragment, null, /* @__PURE__ */ a19.createElement(
|
|
752
788
|
"path",
|
|
753
789
|
{
|
|
754
790
|
d: "M194.82,151.43l-55.09,20.3-20.3,55.09a7.92,7.92,0,0,1-14.86,0l-20.3-55.09-55.09-20.3a7.92,7.92,0,0,1,0-14.86l55.09-20.3,20.3-55.09a7.92,7.92,0,0,1,14.86,0l20.3,55.09,55.09,20.3A7.92,7.92,0,0,1,194.82,151.43Z",
|
|
755
791
|
opacity: "0.2"
|
|
756
792
|
}
|
|
757
|
-
), /* @__PURE__ */
|
|
793
|
+
), /* @__PURE__ */ a19.createElement("path", { d: "M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z" }))
|
|
758
794
|
],
|
|
759
795
|
[
|
|
760
796
|
"fill",
|
|
761
|
-
/* @__PURE__ */
|
|
797
|
+
/* @__PURE__ */ a19.createElement(a19.Fragment, null, /* @__PURE__ */ a19.createElement("path", { d: "M208,144a15.78,15.78,0,0,1-10.42,14.94L146,178l-19,51.62a15.92,15.92,0,0,1-29.88,0L78,178l-51.62-19a15.92,15.92,0,0,1,0-29.88L78,110l19-51.62a15.92,15.92,0,0,1,29.88,0L146,110l51.62,19A15.78,15.78,0,0,1,208,144ZM152,48h16V64a8,8,0,0,0,16,0V48h16a8,8,0,0,0,0-16H184V16a8,8,0,0,0-16,0V32H152a8,8,0,0,0,0,16Zm88,32h-8V72a8,8,0,0,0-16,0v8h-8a8,8,0,0,0,0,16h8v8a8,8,0,0,0,16,0V96h8a8,8,0,0,0,0-16Z" }))
|
|
762
798
|
],
|
|
763
799
|
[
|
|
764
800
|
"light",
|
|
765
|
-
/* @__PURE__ */
|
|
801
|
+
/* @__PURE__ */ a19.createElement(a19.Fragment, null, /* @__PURE__ */ a19.createElement("path", { d: "M196.89,130.94,144.4,111.6,125.06,59.11a13.92,13.92,0,0,0-26.12,0L79.6,111.6,27.11,130.94a13.92,13.92,0,0,0,0,26.12L79.6,176.4l19.34,52.49a13.92,13.92,0,0,0,26.12,0L144.4,176.4l52.49-19.34a13.92,13.92,0,0,0,0-26.12Zm-4.15,14.86-55.08,20.3a6,6,0,0,0-3.56,3.56l-20.3,55.08a1.92,1.92,0,0,1-3.6,0L89.9,169.66a6,6,0,0,0-3.56-3.56L31.26,145.8a1.92,1.92,0,0,1,0-3.6l55.08-20.3a6,6,0,0,0,3.56-3.56l20.3-55.08a1.92,1.92,0,0,1,3.6,0l20.3,55.08a6,6,0,0,0,3.56,3.56l55.08,20.3a1.92,1.92,0,0,1,0,3.6ZM146,40a6,6,0,0,1,6-6h18V16a6,6,0,0,1,12,0V34h18a6,6,0,0,1,0,12H182V64a6,6,0,0,1-12,0V46H152A6,6,0,0,1,146,40ZM246,88a6,6,0,0,1-6,6H230v10a6,6,0,0,1-12,0V94H208a6,6,0,0,1,0-12h10V72a6,6,0,0,1,12,0V82h10A6,6,0,0,1,246,88Z" }))
|
|
766
802
|
],
|
|
767
803
|
[
|
|
768
804
|
"regular",
|
|
769
|
-
/* @__PURE__ */
|
|
805
|
+
/* @__PURE__ */ a19.createElement(a19.Fragment, null, /* @__PURE__ */ a19.createElement("path", { d: "M197.58,129.06,146,110l-19-51.62a15.92,15.92,0,0,0-29.88,0L78,110l-51.62,19a15.92,15.92,0,0,0,0,29.88L78,178l19,51.62a15.92,15.92,0,0,0,29.88,0L146,178l51.62-19a15.92,15.92,0,0,0,0-29.88ZM137,164.22a8,8,0,0,0-4.74,4.74L112,223.85,91.78,169A8,8,0,0,0,87,164.22L32.15,144,87,123.78A8,8,0,0,0,91.78,119L112,64.15,132.22,119a8,8,0,0,0,4.74,4.74L191.85,144ZM144,40a8,8,0,0,1,8-8h16V16a8,8,0,0,1,16,0V32h16a8,8,0,0,1,0,16H184V64a8,8,0,0,1-16,0V48H152A8,8,0,0,1,144,40ZM248,88a8,8,0,0,1-8,8h-8v8a8,8,0,0,1-16,0V96h-8a8,8,0,0,1,0-16h8V72a8,8,0,0,1,16,0v8h8A8,8,0,0,1,248,88Z" }))
|
|
770
806
|
],
|
|
771
807
|
[
|
|
772
808
|
"thin",
|
|
773
|
-
/* @__PURE__ */
|
|
809
|
+
/* @__PURE__ */ a19.createElement(a19.Fragment, null, /* @__PURE__ */ a19.createElement("path", { d: "M196.2,132.81l-53.36-19.65L123.19,59.8a11.93,11.93,0,0,0-22.38,0L81.16,113.16,27.8,132.81a11.93,11.93,0,0,0,0,22.38l53.36,19.65,19.65,53.36a11.93,11.93,0,0,0,22.38,0l19.65-53.36,53.36-19.65a11.93,11.93,0,0,0,0-22.38Zm-2.77,14.87L138.35,168a4,4,0,0,0-2.37,2.37l-20.3,55.08a3.92,3.92,0,0,1-7.36,0L88,170.35A4,4,0,0,0,85.65,168l-55.08-20.3a3.92,3.92,0,0,1,0-7.36L85.65,120A4,4,0,0,0,88,117.65l20.3-55.08a3.92,3.92,0,0,1,7.36,0L136,117.65a4,4,0,0,0,2.37,2.37l55.08,20.3a3.92,3.92,0,0,1,0,7.36ZM148,40a4,4,0,0,1,4-4h20V16a4,4,0,0,1,8,0V36h20a4,4,0,0,1,0,8H180V64a4,4,0,0,1-8,0V44H152A4,4,0,0,1,148,40Zm96,48a4,4,0,0,1-4,4H228v12a4,4,0,0,1-8,0V92H208a4,4,0,0,1,0-8h12V72a4,4,0,0,1,8,0V84h12A4,4,0,0,1,244,88Z" }))
|
|
774
810
|
]
|
|
775
811
|
]);
|
|
776
812
|
|
|
777
813
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Sparkle.es.js
|
|
778
|
-
var
|
|
779
|
-
|
|
814
|
+
var r7 = e27.forwardRef((o42, a28) => /* @__PURE__ */ e27.createElement(w, { ref: a28, ...o42, weights: l }));
|
|
815
|
+
r7.displayName = "SparkleIcon";
|
|
780
816
|
|
|
781
817
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Star.es.js
|
|
782
|
-
import * as
|
|
818
|
+
import * as r8 from "react";
|
|
783
819
|
|
|
784
820
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/Star.es.js
|
|
785
|
-
import * as
|
|
821
|
+
import * as a20 from "react";
|
|
786
822
|
var l2 = /* @__PURE__ */ new Map([
|
|
787
823
|
[
|
|
788
824
|
"bold",
|
|
789
|
-
/* @__PURE__ */
|
|
825
|
+
/* @__PURE__ */ a20.createElement(a20.Fragment, null, /* @__PURE__ */ a20.createElement("path", { d: "M243,96a20.33,20.33,0,0,0-17.74-14l-56.59-4.57L146.83,24.62a20.36,20.36,0,0,0-37.66,0L87.35,77.44,30.76,82A20.45,20.45,0,0,0,19.1,117.88l43.18,37.24-13.2,55.7A20.37,20.37,0,0,0,79.57,233L128,203.19,176.43,233a20.39,20.39,0,0,0,30.49-22.15l-13.2-55.7,43.18-37.24A20.43,20.43,0,0,0,243,96ZM172.53,141.7a12,12,0,0,0-3.84,11.86L181.58,208l-47.29-29.08a12,12,0,0,0-12.58,0L74.42,208l12.89-54.4a12,12,0,0,0-3.84-11.86L41.2,105.24l55.4-4.47a12,12,0,0,0,10.13-7.38L128,41.89l21.27,51.5a12,12,0,0,0,10.13,7.38l55.4,4.47Z" }))
|
|
790
826
|
],
|
|
791
827
|
[
|
|
792
828
|
"duotone",
|
|
793
|
-
/* @__PURE__ */
|
|
829
|
+
/* @__PURE__ */ a20.createElement(a20.Fragment, null, /* @__PURE__ */ a20.createElement(
|
|
794
830
|
"path",
|
|
795
831
|
{
|
|
796
832
|
d: "M229.06,108.79l-48.7,42,14.88,62.79a8.4,8.4,0,0,1-12.52,9.17L128,189.09,73.28,222.74a8.4,8.4,0,0,1-12.52-9.17l14.88-62.79-48.7-42A8.46,8.46,0,0,1,31.73,94L95.64,88.8l24.62-59.6a8.36,8.36,0,0,1,15.48,0l24.62,59.6L224.27,94A8.46,8.46,0,0,1,229.06,108.79Z",
|
|
797
833
|
opacity: "0.2"
|
|
798
834
|
}
|
|
799
|
-
), /* @__PURE__ */
|
|
835
|
+
), /* @__PURE__ */ a20.createElement("path", { d: "M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z" }))
|
|
800
836
|
],
|
|
801
837
|
[
|
|
802
838
|
"fill",
|
|
803
|
-
/* @__PURE__ */
|
|
839
|
+
/* @__PURE__ */ a20.createElement(a20.Fragment, null, /* @__PURE__ */ a20.createElement("path", { d: "M234.29,114.85l-45,38.83L203,211.75a16.4,16.4,0,0,1-24.5,17.82L128,198.49,77.47,229.57A16.4,16.4,0,0,1,53,211.75l13.76-58.07-45-38.83A16.46,16.46,0,0,1,31.08,86l59-4.76,22.76-55.08a16.36,16.36,0,0,1,30.27,0l22.75,55.08,59,4.76a16.46,16.46,0,0,1,9.37,28.86Z" }))
|
|
804
840
|
],
|
|
805
841
|
[
|
|
806
842
|
"light",
|
|
807
|
-
/* @__PURE__ */
|
|
843
|
+
/* @__PURE__ */ a20.createElement(a20.Fragment, null, /* @__PURE__ */ a20.createElement("path", { d: "M237.28,97.87A14.18,14.18,0,0,0,224.76,88l-60.25-4.87-23.22-56.2a14.37,14.37,0,0,0-26.58,0L91.49,83.11,31.24,88a14.18,14.18,0,0,0-12.52,9.89A14.43,14.43,0,0,0,23,113.32L69,152.93l-14,59.25a14.4,14.4,0,0,0,5.59,15,14.1,14.1,0,0,0,15.91.6L128,196.12l51.58,31.71a14.1,14.1,0,0,0,15.91-.6,14.4,14.4,0,0,0,5.59-15l-14-59.25L233,113.32A14.43,14.43,0,0,0,237.28,97.87Zm-12.14,6.37-48.69,42a6,6,0,0,0-1.92,5.92l14.88,62.79a2.35,2.35,0,0,1-.95,2.57,2.24,2.24,0,0,1-2.6.1L131.14,184a6,6,0,0,0-6.28,0L70.14,217.61a2.24,2.24,0,0,1-2.6-.1,2.35,2.35,0,0,1-1-2.57l14.88-62.79a6,6,0,0,0-1.92-5.92l-48.69-42a2.37,2.37,0,0,1-.73-2.65,2.28,2.28,0,0,1,2.07-1.65l63.92-5.16a6,6,0,0,0,5.06-3.69l24.63-59.6a2.35,2.35,0,0,1,4.38,0l24.63,59.6a6,6,0,0,0,5.06,3.69l63.92,5.16a2.28,2.28,0,0,1,2.07,1.65A2.37,2.37,0,0,1,225.14,104.24Z" }))
|
|
808
844
|
],
|
|
809
845
|
[
|
|
810
846
|
"regular",
|
|
811
|
-
/* @__PURE__ */
|
|
847
|
+
/* @__PURE__ */ a20.createElement(a20.Fragment, null, /* @__PURE__ */ a20.createElement("path", { d: "M239.18,97.26A16.38,16.38,0,0,0,224.92,86l-59-4.76L143.14,26.15a16.36,16.36,0,0,0-30.27,0L90.11,81.23,31.08,86a16.46,16.46,0,0,0-9.37,28.86l45,38.83L53,211.75a16.38,16.38,0,0,0,24.5,17.82L128,198.49l50.53,31.08A16.4,16.4,0,0,0,203,211.75l-13.76-58.07,45-38.83A16.43,16.43,0,0,0,239.18,97.26Zm-15.34,5.47-48.7,42a8,8,0,0,0-2.56,7.91l14.88,62.8a.37.37,0,0,1-.17.48c-.18.14-.23.11-.38,0l-54.72-33.65a8,8,0,0,0-8.38,0L69.09,215.94c-.15.09-.19.12-.38,0a.37.37,0,0,1-.17-.48l14.88-62.8a8,8,0,0,0-2.56-7.91l-48.7-42c-.12-.1-.23-.19-.13-.5s.18-.27.33-.29l63.92-5.16A8,8,0,0,0,103,91.86l24.62-59.61c.08-.17.11-.25.35-.25s.27.08.35.25L153,91.86a8,8,0,0,0,6.75,4.92l63.92,5.16c.15,0,.24,0,.33.29S224,102.63,223.84,102.73Z" }))
|
|
812
848
|
],
|
|
813
849
|
[
|
|
814
850
|
"thin",
|
|
815
|
-
/* @__PURE__ */
|
|
851
|
+
/* @__PURE__ */ a20.createElement(a20.Fragment, null, /* @__PURE__ */ a20.createElement("path", { d: "M235.36,98.49A12.21,12.21,0,0,0,224.59,90l-61.47-5L139.44,27.67a12.37,12.37,0,0,0-22.88,0L92.88,85,31.41,90a12.45,12.45,0,0,0-7.07,21.84l46.85,40.41L56.87,212.64a12.35,12.35,0,0,0,18.51,13.49L128,193.77l52.62,32.36a12.12,12.12,0,0,0,13.69-.51,12.28,12.28,0,0,0,4.82-13l-14.32-60.42,46.85-40.41A12.29,12.29,0,0,0,235.36,98.49Zm-8.93,7.26-48.68,42a4,4,0,0,0-1.28,3.95l14.87,62.79a4.37,4.37,0,0,1-1.72,4.65,4.24,4.24,0,0,1-4.81.18L130.1,185.67a4,4,0,0,0-4.2,0L71.19,219.32a4.24,4.24,0,0,1-4.81-.18,4.37,4.37,0,0,1-1.72-4.65L79.53,151.7a4,4,0,0,0-1.28-3.95l-48.68-42A4.37,4.37,0,0,1,28.25,101a4.31,4.31,0,0,1,3.81-3L96,92.79a4,4,0,0,0,3.38-2.46L124,30.73a4.35,4.35,0,0,1,8.08,0l24.62,59.6A4,4,0,0,0,160,92.79l63.9,5.15a4.31,4.31,0,0,1,3.81,3A4.37,4.37,0,0,1,226.43,105.75Z" }))
|
|
816
852
|
]
|
|
817
853
|
]);
|
|
818
854
|
|
|
819
855
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/Star.es.js
|
|
820
|
-
var t5 =
|
|
856
|
+
var t5 = r8.forwardRef((o42, a28) => /* @__PURE__ */ r8.createElement(w, { ref: a28, ...o42, weights: l2 }));
|
|
821
857
|
t5.displayName = "StarIcon";
|
|
822
858
|
|
|
823
859
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/UserCircle.es.js
|
|
824
|
-
import * as
|
|
860
|
+
import * as e29 from "react";
|
|
825
861
|
|
|
826
862
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/UserCircle.es.js
|
|
827
|
-
import * as
|
|
828
|
-
var
|
|
863
|
+
import * as e28 from "react";
|
|
864
|
+
var a21 = /* @__PURE__ */ new Map([
|
|
829
865
|
[
|
|
830
866
|
"bold",
|
|
831
|
-
/* @__PURE__ */
|
|
867
|
+
/* @__PURE__ */ e28.createElement(e28.Fragment, null, /* @__PURE__ */ e28.createElement("path", { d: "M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20ZM79.57,196.57a60,60,0,0,1,96.86,0,83.72,83.72,0,0,1-96.86,0ZM100,120a28,28,0,1,1,28,28A28,28,0,0,1,100,120ZM194,179.94a83.48,83.48,0,0,0-29-23.42,52,52,0,1,0-74,0,83.48,83.48,0,0,0-29,23.42,84,84,0,1,1,131.9,0Z" }))
|
|
832
868
|
],
|
|
833
869
|
[
|
|
834
870
|
"duotone",
|
|
835
|
-
/* @__PURE__ */
|
|
871
|
+
/* @__PURE__ */ e28.createElement(e28.Fragment, null, /* @__PURE__ */ e28.createElement(
|
|
836
872
|
"path",
|
|
837
873
|
{
|
|
838
874
|
d: "M224,128a95.76,95.76,0,0,1-31.8,71.37A72,72,0,0,0,128,160a40,40,0,1,0-40-40,40,40,0,0,0,40,40,72,72,0,0,0-64.2,39.37h0A96,96,0,1,1,224,128Z",
|
|
839
875
|
opacity: "0.2"
|
|
840
876
|
}
|
|
841
|
-
), /* @__PURE__ */
|
|
877
|
+
), /* @__PURE__ */ e28.createElement("path", { d: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z" }))
|
|
842
878
|
],
|
|
843
879
|
[
|
|
844
880
|
"fill",
|
|
845
|
-
/* @__PURE__ */
|
|
881
|
+
/* @__PURE__ */ e28.createElement(e28.Fragment, null, /* @__PURE__ */ e28.createElement("path", { d: "M172,120a44,44,0,1,1-44-44A44.05,44.05,0,0,1,172,120Zm60,8A104,104,0,1,1,128,24,104.11,104.11,0,0,1,232,128Zm-16,0a88.09,88.09,0,0,0-91.47-87.93C77.43,41.89,39.87,81.12,40,128.25a87.65,87.65,0,0,0,22.24,58.16A79.71,79.71,0,0,1,84,165.1a4,4,0,0,1,4.83.32,59.83,59.83,0,0,0,78.28,0,4,4,0,0,1,4.83-.32,79.71,79.71,0,0,1,21.79,21.31A87.62,87.62,0,0,0,216,128Z" }))
|
|
846
882
|
],
|
|
847
883
|
[
|
|
848
884
|
"light",
|
|
849
|
-
/* @__PURE__ */
|
|
885
|
+
/* @__PURE__ */ e28.createElement(e28.Fragment, null, /* @__PURE__ */ e28.createElement("path", { d: "M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26ZM71.44,198a66,66,0,0,1,113.12,0,89.8,89.8,0,0,1-113.12,0ZM94,120a34,34,0,1,1,34,34A34,34,0,0,1,94,120Zm99.51,69.64a77.53,77.53,0,0,0-40-31.38,46,46,0,1,0-51,0,77.53,77.53,0,0,0-40,31.38,90,90,0,1,1,131,0Z" }))
|
|
850
886
|
],
|
|
851
887
|
[
|
|
852
888
|
"regular",
|
|
853
|
-
/* @__PURE__ */
|
|
889
|
+
/* @__PURE__ */ e28.createElement(e28.Fragment, null, /* @__PURE__ */ e28.createElement("path", { d: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24ZM74.08,197.5a64,64,0,0,1,107.84,0,87.83,87.83,0,0,1-107.84,0ZM96,120a32,32,0,1,1,32,32A32,32,0,0,1,96,120Zm97.76,66.41a79.66,79.66,0,0,0-36.06-28.75,48,48,0,1,0-59.4,0,79.66,79.66,0,0,0-36.06,28.75,88,88,0,1,1,131.52,0Z" }))
|
|
854
890
|
],
|
|
855
891
|
[
|
|
856
892
|
"thin",
|
|
857
|
-
/* @__PURE__ */
|
|
893
|
+
/* @__PURE__ */ e28.createElement(e28.Fragment, null, /* @__PURE__ */ e28.createElement("path", { d: "M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28ZM68.87,198.42a68,68,0,0,1,118.26,0,91.8,91.8,0,0,1-118.26,0Zm124.3-5.55a75.61,75.61,0,0,0-44.51-34,44,44,0,1,0-41.32,0,75.61,75.61,0,0,0-44.51,34,92,92,0,1,1,130.34,0ZM128,156a36,36,0,1,1,36-36A36,36,0,0,1,128,156Z" }))
|
|
858
894
|
]
|
|
859
895
|
]);
|
|
860
896
|
|
|
861
897
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/UserCircle.es.js
|
|
862
|
-
var
|
|
863
|
-
|
|
898
|
+
var r9 = e29.forwardRef((o42, s4) => /* @__PURE__ */ e29.createElement(w, { ref: s4, ...o42, weights: a21 }));
|
|
899
|
+
r9.displayName = "UserCircleIcon";
|
|
864
900
|
|
|
865
901
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/WarningCircle.es.js
|
|
866
|
-
import * as
|
|
902
|
+
import * as r10 from "react";
|
|
867
903
|
|
|
868
904
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/WarningCircle.es.js
|
|
869
|
-
import * as
|
|
870
|
-
var
|
|
905
|
+
import * as e30 from "react";
|
|
906
|
+
var a22 = /* @__PURE__ */ new Map([
|
|
871
907
|
[
|
|
872
908
|
"bold",
|
|
873
|
-
/* @__PURE__ */
|
|
909
|
+
/* @__PURE__ */ e30.createElement(e30.Fragment, null, /* @__PURE__ */ e30.createElement("path", { d: "M128,20A108,108,0,1,0,236,128,108.12,108.12,0,0,0,128,20Zm0,192a84,84,0,1,1,84-84A84.09,84.09,0,0,1,128,212Zm-12-80V80a12,12,0,0,1,24,0v52a12,12,0,0,1-24,0Zm28,40a16,16,0,1,1-16-16A16,16,0,0,1,144,172Z" }))
|
|
874
910
|
],
|
|
875
911
|
[
|
|
876
912
|
"duotone",
|
|
877
|
-
/* @__PURE__ */
|
|
913
|
+
/* @__PURE__ */ e30.createElement(e30.Fragment, null, /* @__PURE__ */ e30.createElement("path", { d: "M224,128a96,96,0,1,1-96-96A96,96,0,0,1,224,128Z", opacity: "0.2" }), /* @__PURE__ */ e30.createElement("path", { d: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z" }))
|
|
878
914
|
],
|
|
879
915
|
[
|
|
880
916
|
"fill",
|
|
881
|
-
/* @__PURE__ */
|
|
917
|
+
/* @__PURE__ */ e30.createElement(e30.Fragment, null, /* @__PURE__ */ e30.createElement("path", { d: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm-8,56a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm8,104a12,12,0,1,1,12-12A12,12,0,0,1,128,184Z" }))
|
|
882
918
|
],
|
|
883
919
|
[
|
|
884
920
|
"light",
|
|
885
|
-
/* @__PURE__ */
|
|
921
|
+
/* @__PURE__ */ e30.createElement(e30.Fragment, null, /* @__PURE__ */ e30.createElement("path", { d: "M128,26A102,102,0,1,0,230,128,102.12,102.12,0,0,0,128,26Zm0,192a90,90,0,1,1,90-90A90.1,90.1,0,0,1,128,218Zm-6-82V80a6,6,0,0,1,12,0v56a6,6,0,0,1-12,0Zm16,36a10,10,0,1,1-10-10A10,10,0,0,1,138,172Z" }))
|
|
886
922
|
],
|
|
887
923
|
[
|
|
888
924
|
"regular",
|
|
889
|
-
/* @__PURE__ */
|
|
925
|
+
/* @__PURE__ */ e30.createElement(e30.Fragment, null, /* @__PURE__ */ e30.createElement("path", { d: "M128,24A104,104,0,1,0,232,128,104.11,104.11,0,0,0,128,24Zm0,192a88,88,0,1,1,88-88A88.1,88.1,0,0,1,128,216Zm-8-80V80a8,8,0,0,1,16,0v56a8,8,0,0,1-16,0Zm20,36a12,12,0,1,1-12-12A12,12,0,0,1,140,172Z" }))
|
|
890
926
|
],
|
|
891
927
|
[
|
|
892
928
|
"thin",
|
|
893
|
-
/* @__PURE__ */
|
|
929
|
+
/* @__PURE__ */ e30.createElement(e30.Fragment, null, /* @__PURE__ */ e30.createElement("path", { d: "M128,28A100,100,0,1,0,228,128,100.11,100.11,0,0,0,128,28Zm0,192a92,92,0,1,1,92-92A92.1,92.1,0,0,1,128,220Zm-4-84V80a4,4,0,0,1,8,0v56a4,4,0,0,1-8,0Zm12,36a8,8,0,1,1-8-8A8,8,0,0,1,136,172Z" }))
|
|
894
930
|
]
|
|
895
931
|
]);
|
|
896
932
|
|
|
897
933
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/WarningCircle.es.js
|
|
898
|
-
var
|
|
899
|
-
|
|
934
|
+
var e31 = r10.forwardRef((o42, a28) => /* @__PURE__ */ r10.createElement(w, { ref: a28, ...o42, weights: a22 }));
|
|
935
|
+
e31.displayName = "WarningCircleIcon";
|
|
900
936
|
|
|
901
937
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/X.es.js
|
|
902
|
-
import * as
|
|
938
|
+
import * as o16 from "react";
|
|
903
939
|
|
|
904
940
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/defs/X.es.js
|
|
905
|
-
import * as
|
|
906
|
-
var
|
|
941
|
+
import * as e32 from "react";
|
|
942
|
+
var a23 = /* @__PURE__ */ new Map([
|
|
907
943
|
[
|
|
908
944
|
"bold",
|
|
909
|
-
/* @__PURE__ */
|
|
945
|
+
/* @__PURE__ */ e32.createElement(e32.Fragment, null, /* @__PURE__ */ e32.createElement("path", { d: "M208.49,191.51a12,12,0,0,1-17,17L128,145,64.49,208.49a12,12,0,0,1-17-17L111,128,47.51,64.49a12,12,0,0,1,17-17L128,111l63.51-63.52a12,12,0,0,1,17,17L145,128Z" }))
|
|
910
946
|
],
|
|
911
947
|
[
|
|
912
948
|
"duotone",
|
|
913
|
-
/* @__PURE__ */
|
|
949
|
+
/* @__PURE__ */ e32.createElement(e32.Fragment, null, /* @__PURE__ */ e32.createElement(
|
|
914
950
|
"path",
|
|
915
951
|
{
|
|
916
952
|
d: "M216,56V200a16,16,0,0,1-16,16H56a16,16,0,0,1-16-16V56A16,16,0,0,1,56,40H200A16,16,0,0,1,216,56Z",
|
|
917
953
|
opacity: "0.2"
|
|
918
954
|
}
|
|
919
|
-
), /* @__PURE__ */
|
|
955
|
+
), /* @__PURE__ */ e32.createElement("path", { d: "M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" }))
|
|
920
956
|
],
|
|
921
957
|
[
|
|
922
958
|
"fill",
|
|
923
|
-
/* @__PURE__ */
|
|
959
|
+
/* @__PURE__ */ e32.createElement(e32.Fragment, null, /* @__PURE__ */ e32.createElement("path", { d: "M208,32H48A16,16,0,0,0,32,48V208a16,16,0,0,0,16,16H208a16,16,0,0,0,16-16V48A16,16,0,0,0,208,32ZM181.66,170.34a8,8,0,0,1-11.32,11.32L128,139.31,85.66,181.66a8,8,0,0,1-11.32-11.32L116.69,128,74.34,85.66A8,8,0,0,1,85.66,74.34L128,116.69l42.34-42.35a8,8,0,0,1,11.32,11.32L139.31,128Z" }))
|
|
924
960
|
],
|
|
925
961
|
[
|
|
926
962
|
"light",
|
|
927
|
-
/* @__PURE__ */
|
|
963
|
+
/* @__PURE__ */ e32.createElement(e32.Fragment, null, /* @__PURE__ */ e32.createElement("path", { d: "M204.24,195.76a6,6,0,1,1-8.48,8.48L128,136.49,60.24,204.24a6,6,0,0,1-8.48-8.48L119.51,128,51.76,60.24a6,6,0,0,1,8.48-8.48L128,119.51l67.76-67.75a6,6,0,0,1,8.48,8.48L136.49,128Z" }))
|
|
928
964
|
],
|
|
929
965
|
[
|
|
930
966
|
"regular",
|
|
931
|
-
/* @__PURE__ */
|
|
967
|
+
/* @__PURE__ */ e32.createElement(e32.Fragment, null, /* @__PURE__ */ e32.createElement("path", { d: "M205.66,194.34a8,8,0,0,1-11.32,11.32L128,139.31,61.66,205.66a8,8,0,0,1-11.32-11.32L116.69,128,50.34,61.66A8,8,0,0,1,61.66,50.34L128,116.69l66.34-66.35a8,8,0,0,1,11.32,11.32L139.31,128Z" }))
|
|
932
968
|
],
|
|
933
969
|
[
|
|
934
970
|
"thin",
|
|
935
|
-
/* @__PURE__ */
|
|
971
|
+
/* @__PURE__ */ e32.createElement(e32.Fragment, null, /* @__PURE__ */ e32.createElement("path", { d: "M202.83,197.17a4,4,0,0,1-5.66,5.66L128,133.66,58.83,202.83a4,4,0,0,1-5.66-5.66L122.34,128,53.17,58.83a4,4,0,0,1,5.66-5.66L128,122.34l69.17-69.17a4,4,0,1,1,5.66,5.66L133.66,128Z" }))
|
|
936
972
|
]
|
|
937
973
|
]);
|
|
938
974
|
|
|
939
975
|
// ../../node_modules/.bun/@phosphor-icons+react@2.1.10+005eabf3d8b6ef06/node_modules/@phosphor-icons/react/dist/ssr/X.es.js
|
|
940
|
-
var
|
|
941
|
-
|
|
976
|
+
var e33 = o16.forwardRef((r32, t9) => /* @__PURE__ */ o16.createElement(w, { ref: t9, ...r32, weights: a23 }));
|
|
977
|
+
e33.displayName = "XIcon";
|
|
942
978
|
|
|
943
979
|
// ../../apps/web/src/components/icons.tsx
|
|
944
980
|
import { jsx } from "react/jsx-runtime";
|
|
@@ -949,31 +985,32 @@ function icon(Base, name, weight = "fill") {
|
|
|
949
985
|
Wrapped.displayName = `${name}Icon`;
|
|
950
986
|
return Wrapped;
|
|
951
987
|
}
|
|
952
|
-
var Bug = /* @__PURE__ */ icon(
|
|
953
|
-
var ChatCircleDots = /* @__PURE__ */ icon(
|
|
954
|
-
var EnvelopeSimple = /* @__PURE__ */ icon(
|
|
955
|
-
var File = /* @__PURE__ */ icon(
|
|
956
|
-
var ImageSquare = /* @__PURE__ */ icon(
|
|
957
|
-
var Lightbulb = /* @__PURE__ */ icon(
|
|
958
|
-
var LockSimple = /* @__PURE__ */ icon(
|
|
959
|
-
var Play = /* @__PURE__ */ icon(
|
|
960
|
-
var Sparkle = /* @__PURE__ */ icon(
|
|
988
|
+
var Bug = /* @__PURE__ */ icon(e9, "Bug");
|
|
989
|
+
var ChatCircleDots = /* @__PURE__ */ icon(o8, "ChatCircleDots");
|
|
990
|
+
var EnvelopeSimple = /* @__PURE__ */ icon(o10, "EnvelopeSimple");
|
|
991
|
+
var File = /* @__PURE__ */ icon(o11, "File");
|
|
992
|
+
var ImageSquare = /* @__PURE__ */ icon(a13, "ImageSquare");
|
|
993
|
+
var Lightbulb = /* @__PURE__ */ icon(o12, "Lightbulb");
|
|
994
|
+
var LockSimple = /* @__PURE__ */ icon(e23, "LockSimple");
|
|
995
|
+
var Play = /* @__PURE__ */ icon(a17, "Play");
|
|
996
|
+
var Sparkle = /* @__PURE__ */ icon(r7, "Sparkle");
|
|
961
997
|
var Star = /* @__PURE__ */ icon(t5, "Star");
|
|
962
|
-
var UserCircle = /* @__PURE__ */ icon(
|
|
963
|
-
var WarningCircle = /* @__PURE__ */ icon(
|
|
998
|
+
var UserCircle = /* @__PURE__ */ icon(r9, "UserCircle");
|
|
999
|
+
var WarningCircle = /* @__PURE__ */ icon(e31, "WarningCircle");
|
|
964
1000
|
var ArrowDown = /* @__PURE__ */ icon(r, "ArrowDown", "bold");
|
|
965
|
-
var
|
|
1001
|
+
var ArrowRight = /* @__PURE__ */ icon(o2, "ArrowRight", "bold");
|
|
1002
|
+
var ArrowUp = /* @__PURE__ */ icon(o3, "ArrowUp", "bold");
|
|
966
1003
|
var ArrowsClockwise = /* @__PURE__ */ icon(
|
|
967
|
-
|
|
1004
|
+
r4,
|
|
968
1005
|
"ArrowsClockwise",
|
|
969
1006
|
"bold"
|
|
970
1007
|
);
|
|
971
|
-
var ArrowsIn = /* @__PURE__ */ icon(
|
|
972
|
-
var ArrowsOut = /* @__PURE__ */ icon(
|
|
973
|
-
var CaretRight = /* @__PURE__ */ icon(
|
|
974
|
-
var Check = /* @__PURE__ */ icon(
|
|
975
|
-
var X = /* @__PURE__ */ icon(
|
|
976
|
-
var Plus = /* @__PURE__ */ icon(
|
|
1008
|
+
var ArrowsIn = /* @__PURE__ */ icon(o5, "ArrowsIn", "bold");
|
|
1009
|
+
var ArrowsOut = /* @__PURE__ */ icon(o6, "ArrowsOut", "bold");
|
|
1010
|
+
var CaretRight = /* @__PURE__ */ icon(e11, "CaretRight", "bold");
|
|
1011
|
+
var Check = /* @__PURE__ */ icon(o9, "Check", "bold");
|
|
1012
|
+
var X = /* @__PURE__ */ icon(e33, "X", "bold");
|
|
1013
|
+
var Plus = /* @__PURE__ */ icon(e26, "Plus", "bold");
|
|
977
1014
|
|
|
978
1015
|
// ../../apps/web/src/components/support-widget/launcher-position.ts
|
|
979
1016
|
var DEFAULT_SPOT = { side: "right", y: 1 };
|
|
@@ -1060,57 +1097,57 @@ import * as React3 from "react";
|
|
|
1060
1097
|
|
|
1061
1098
|
// ../../node_modules/.bun/@shadcn+react@0.3.0+03aa47d54245a271/node_modules/@shadcn/react/dist/chunk-HBS6WEDP.js
|
|
1062
1099
|
import * as i2 from "react";
|
|
1063
|
-
function S({ defaultTagName:
|
|
1064
|
-
let
|
|
1065
|
-
if (!
|
|
1066
|
-
if (typeof
|
|
1067
|
-
if (!i2.isValidElement(
|
|
1068
|
-
let s4 =
|
|
1069
|
-
return i2.cloneElement(
|
|
1070
|
-
}
|
|
1071
|
-
function d(...
|
|
1072
|
-
let
|
|
1073
|
-
for (let
|
|
1074
|
-
if (!
|
|
1075
|
-
let n =
|
|
1076
|
-
for (let
|
|
1077
|
-
let
|
|
1078
|
-
if (
|
|
1079
|
-
let s4 =
|
|
1080
|
-
|
|
1100
|
+
function S({ defaultTagName: a28, props: r32, render: t9, state: n = {}, stateAttributesMapping: e54 }) {
|
|
1101
|
+
let o42 = d(R(n, e54), r32);
|
|
1102
|
+
if (!t9) return i2.createElement(a28, o42);
|
|
1103
|
+
if (typeof t9 == "function") return t9(o42, n);
|
|
1104
|
+
if (!i2.isValidElement(t9)) return null;
|
|
1105
|
+
let s4 = t9.props, u = { ...d(o42, s4), ref: f8(o42.ref, s4.ref) };
|
|
1106
|
+
return i2.cloneElement(t9, u);
|
|
1107
|
+
}
|
|
1108
|
+
function d(...a28) {
|
|
1109
|
+
let r32 = {};
|
|
1110
|
+
for (let t9 of a28) {
|
|
1111
|
+
if (!t9) continue;
|
|
1112
|
+
let n = t9;
|
|
1113
|
+
for (let e54 of Object.keys(n)) {
|
|
1114
|
+
let o42 = n[e54];
|
|
1115
|
+
if (o42 === void 0) continue;
|
|
1116
|
+
let s4 = r32[e54];
|
|
1117
|
+
e54 === "className" ? r32[e54] = [s4, o42].filter(Boolean).join(" ") : e54 === "style" ? r32[e54] = { ...s4, ...o42 } : e54 === "ref" ? r32[e54] = f8(s4, o42) : l4(e54) && typeof s4 == "function" && typeof o42 == "function" ? r32[e54] = p2(o42, s4) : r32[e54] = o42;
|
|
1081
1118
|
}
|
|
1082
1119
|
}
|
|
1083
|
-
return
|
|
1084
|
-
}
|
|
1085
|
-
function R(
|
|
1086
|
-
let
|
|
1087
|
-
for (let n of Object.keys(
|
|
1088
|
-
let
|
|
1089
|
-
if (
|
|
1090
|
-
Object.assign(
|
|
1120
|
+
return r32;
|
|
1121
|
+
}
|
|
1122
|
+
function R(a28, r32) {
|
|
1123
|
+
let t9 = {};
|
|
1124
|
+
for (let n of Object.keys(a28)) {
|
|
1125
|
+
let e54 = a28[n], o42 = r32?.[n]?.(e54);
|
|
1126
|
+
if (o42) {
|
|
1127
|
+
Object.assign(t9, o42);
|
|
1091
1128
|
continue;
|
|
1092
1129
|
}
|
|
1093
1130
|
if (n === "slot") {
|
|
1094
|
-
|
|
1131
|
+
t9["data-slot"] = e54;
|
|
1095
1132
|
continue;
|
|
1096
1133
|
}
|
|
1097
|
-
let s4 = `data-${String(n).replace(/[A-Z]/g, (
|
|
1098
|
-
typeof
|
|
1134
|
+
let s4 = `data-${String(n).replace(/[A-Z]/g, (c7) => `-${c7.toLowerCase()}`)}`;
|
|
1135
|
+
typeof e54 == "boolean" ? t9[s4] = e54 ? "" : void 0 : e54 != null && (t9[s4] = String(e54));
|
|
1099
1136
|
}
|
|
1100
|
-
return
|
|
1137
|
+
return t9;
|
|
1101
1138
|
}
|
|
1102
|
-
function p2(
|
|
1139
|
+
function p2(a28, r32) {
|
|
1103
1140
|
return function(n) {
|
|
1104
|
-
|
|
1141
|
+
a28(n), n.defaultPrevented || r32(n);
|
|
1105
1142
|
};
|
|
1106
1143
|
}
|
|
1107
|
-
function l4(
|
|
1108
|
-
return /^on[A-Z]/.test(
|
|
1144
|
+
function l4(a28) {
|
|
1145
|
+
return /^on[A-Z]/.test(a28);
|
|
1109
1146
|
}
|
|
1110
|
-
function f8(...
|
|
1111
|
-
let
|
|
1112
|
-
if (
|
|
1113
|
-
for (let n of
|
|
1147
|
+
function f8(...a28) {
|
|
1148
|
+
let r32 = a28.filter(Boolean);
|
|
1149
|
+
if (r32.length !== 0) return (t9) => {
|
|
1150
|
+
for (let n of r32) typeof n == "function" ? n(t9) : n && (n.current = t9);
|
|
1114
1151
|
};
|
|
1115
1152
|
}
|
|
1116
1153
|
|
|
@@ -1126,15 +1163,15 @@ var Be = /* @__PURE__ */ new Set(["ArrowDown", "ArrowUp", "End", "Home", "PageDo
|
|
|
1126
1163
|
var ge = { start: false, end: false };
|
|
1127
1164
|
var dt = [];
|
|
1128
1165
|
var Q = { currentAnchorId: null, visibleMessageIds: dt };
|
|
1129
|
-
function De({ content:
|
|
1130
|
-
if (!n || !
|
|
1131
|
-
let
|
|
1132
|
-
return { start: n.scrollTop >
|
|
1133
|
-
}
|
|
1134
|
-
function Fe({ content:
|
|
1135
|
-
if (!
|
|
1136
|
-
let S2 =
|
|
1137
|
-
for (let C of ee(
|
|
1166
|
+
function De({ content: e54, scrollEdgeThreshold: t9, spacer: r32, viewport: n }) {
|
|
1167
|
+
if (!n || !e54) return ge;
|
|
1168
|
+
let o42 = Se({ content: e54, spacer: r32, viewport: n });
|
|
1169
|
+
return { start: n.scrollTop > t9, end: o42 - n.scrollTop - n.clientHeight > t9 };
|
|
1170
|
+
}
|
|
1171
|
+
function Fe({ content: e54, scrollMargin: t9, scrollPreviousItemPeek: r32, spacer: n, viewport: o42, visibleMessageIds: i3 }) {
|
|
1172
|
+
if (!e54 || !o42) return Q;
|
|
1173
|
+
let S2 = o42.getBoundingClientRect(), l5 = S2.top + t9 + r32, d2 = typeof IntersectionObserver > "u", E = [], b2 = null;
|
|
1174
|
+
for (let C of ee(e54, n)) {
|
|
1138
1175
|
let p3 = C.dataset.messageId;
|
|
1139
1176
|
if (!p3) continue;
|
|
1140
1177
|
let m5 = C.dataset.scrollAnchor === "true", L = m5 || d2 ? C.getBoundingClientRect() : null;
|
|
@@ -1142,238 +1179,238 @@ function Fe({ content: e53, scrollMargin: t8, scrollPreviousItemPeek: r28, space
|
|
|
1142
1179
|
}
|
|
1143
1180
|
return E.length === 0 && b2 === null ? Q : { currentAnchorId: b2, visibleMessageIds: E };
|
|
1144
1181
|
}
|
|
1145
|
-
function ee(
|
|
1146
|
-
return Array.from(
|
|
1182
|
+
function ee(e54, t9) {
|
|
1183
|
+
return Array.from(e54.children).filter((r32) => r32 instanceof HTMLElement && r32 !== t9);
|
|
1147
1184
|
}
|
|
1148
|
-
function je(
|
|
1149
|
-
for (let
|
|
1150
|
-
let n =
|
|
1185
|
+
function je(e54, t9) {
|
|
1186
|
+
for (let r32 = t9; r32 < e54.length; r32++) {
|
|
1187
|
+
let n = e54[r32];
|
|
1151
1188
|
if (n?.dataset.scrollAnchor === "true") return n;
|
|
1152
1189
|
}
|
|
1153
1190
|
return null;
|
|
1154
1191
|
}
|
|
1155
|
-
function Ge(
|
|
1156
|
-
for (let
|
|
1192
|
+
function Ge(e54, t9) {
|
|
1193
|
+
for (let r32 of e54) if (r32.dataset.scrollAnchor === "true" && !t9.has(r32)) return r32;
|
|
1157
1194
|
return null;
|
|
1158
1195
|
}
|
|
1159
|
-
function Ne(
|
|
1160
|
-
let
|
|
1161
|
-
for (let n =
|
|
1196
|
+
function Ne(e54, t9) {
|
|
1197
|
+
let r32 = 0;
|
|
1198
|
+
for (let n = t9; n < e54.length; n++) if (e54[n]?.dataset.scrollAnchor === "true" && (r32 += 1, r32 > 1)) return true;
|
|
1162
1199
|
return false;
|
|
1163
1200
|
}
|
|
1164
|
-
function Ue(
|
|
1165
|
-
for (let
|
|
1166
|
-
let
|
|
1167
|
-
if (
|
|
1201
|
+
function Ue(e54) {
|
|
1202
|
+
for (let t9 = e54.length - 1; t9 >= 0; t9--) {
|
|
1203
|
+
let r32 = e54[t9];
|
|
1204
|
+
if (r32?.dataset.scrollAnchor === "true") return r32;
|
|
1168
1205
|
}
|
|
1169
1206
|
return null;
|
|
1170
1207
|
}
|
|
1171
|
-
function Ye({ content:
|
|
1172
|
-
let n =
|
|
1173
|
-
for (let
|
|
1174
|
-
if (!
|
|
1175
|
-
let i3 =
|
|
1176
|
-
if (i3.bottom > n.top && i3.top < n.bottom) return
|
|
1208
|
+
function Ye({ content: e54, spacer: t9, viewport: r32 }) {
|
|
1209
|
+
let n = r32.getBoundingClientRect();
|
|
1210
|
+
for (let o42 of ee(e54, t9)) {
|
|
1211
|
+
if (!o42.dataset.messageId) continue;
|
|
1212
|
+
let i3 = o42.getBoundingClientRect();
|
|
1213
|
+
if (i3.bottom > n.top && i3.top < n.bottom) return o42;
|
|
1177
1214
|
}
|
|
1178
1215
|
return null;
|
|
1179
1216
|
}
|
|
1180
|
-
function ze({ align:
|
|
1181
|
-
let i3 = pe(
|
|
1182
|
-
if (
|
|
1183
|
-
let d2 = Math.max(0,
|
|
1184
|
-
return i3 - l5.start - (d2 - S2) / 2 -
|
|
1217
|
+
function ze({ align: e54, element: t9, scrollMargin: r32, spacer: n, viewport: o42 }) {
|
|
1218
|
+
let i3 = pe(t9, o42), S2 = t9.getBoundingClientRect().height, l5 = bt(n);
|
|
1219
|
+
if (e54 === "center") {
|
|
1220
|
+
let d2 = Math.max(0, o42.clientHeight - l5.start - l5.end);
|
|
1221
|
+
return i3 - l5.start - (d2 - S2) / 2 - r32;
|
|
1185
1222
|
}
|
|
1186
|
-
if (
|
|
1187
|
-
if (
|
|
1188
|
-
let d2 = i3 + S2, E =
|
|
1189
|
-
return i3 >= E && d2 <= b2 ?
|
|
1223
|
+
if (e54 === "end") return i3 - o42.clientHeight + S2 + l5.end + r32;
|
|
1224
|
+
if (e54 === "nearest") {
|
|
1225
|
+
let d2 = i3 + S2, E = o42.scrollTop + l5.start, b2 = o42.scrollTop + o42.clientHeight - l5.end;
|
|
1226
|
+
return i3 >= E && d2 <= b2 ? o42.scrollTop : i3 < E ? i3 - l5.start - r32 : d2 - o42.clientHeight + l5.end + r32;
|
|
1190
1227
|
}
|
|
1191
|
-
return i3 - l5.start -
|
|
1228
|
+
return i3 - l5.start - r32;
|
|
1192
1229
|
}
|
|
1193
|
-
function pe(
|
|
1194
|
-
let
|
|
1195
|
-
return
|
|
1230
|
+
function pe(e54, t9) {
|
|
1231
|
+
let r32 = e54.getBoundingClientRect(), n = t9.getBoundingClientRect();
|
|
1232
|
+
return r32.top - n.top + t9.scrollTop;
|
|
1196
1233
|
}
|
|
1197
|
-
function te(
|
|
1198
|
-
return
|
|
1234
|
+
function te(e54, t9) {
|
|
1235
|
+
return e54.getBoundingClientRect().top - t9.getBoundingClientRect().top;
|
|
1199
1236
|
}
|
|
1200
|
-
function qe({ content:
|
|
1201
|
-
let
|
|
1202
|
-
return
|
|
1237
|
+
function qe({ content: e54, scrollTop: t9, spacer: r32, viewport: n }) {
|
|
1238
|
+
let o42 = Se({ content: e54, spacer: r32, viewport: n });
|
|
1239
|
+
return t9 + n.clientHeight - o42;
|
|
1203
1240
|
}
|
|
1204
|
-
function Se({ content:
|
|
1205
|
-
let n = ee(
|
|
1241
|
+
function Se({ content: e54, spacer: t9, viewport: r32 }) {
|
|
1242
|
+
let n = ee(e54, t9), o42 = We(e54), i3 = r32.getBoundingClientRect(), S2 = r32.scrollTop, l5 = o42.start + o42.end;
|
|
1206
1243
|
for (let d2 of n) {
|
|
1207
1244
|
let E = d2.getBoundingClientRect();
|
|
1208
|
-
l5 = Math.max(l5, E.bottom - i3.top + S2 +
|
|
1245
|
+
l5 = Math.max(l5, E.bottom - i3.top + S2 + o42.end);
|
|
1209
1246
|
}
|
|
1210
1247
|
return l5;
|
|
1211
1248
|
}
|
|
1212
|
-
function Ke(
|
|
1213
|
-
return Math.max(0,
|
|
1249
|
+
function Ke(e54) {
|
|
1250
|
+
return Math.max(0, e54.scrollHeight - e54.clientHeight);
|
|
1214
1251
|
}
|
|
1215
|
-
function We(
|
|
1216
|
-
let
|
|
1217
|
-
return { end: Re(
|
|
1252
|
+
function We(e54) {
|
|
1253
|
+
let t9 = window.getComputedStyle(e54);
|
|
1254
|
+
return { end: Re(t9.paddingBlockEnd || t9.paddingBottom), start: Re(t9.paddingBlockStart || t9.paddingTop) };
|
|
1218
1255
|
}
|
|
1219
|
-
function bt(
|
|
1220
|
-
let
|
|
1221
|
-
return
|
|
1256
|
+
function bt(e54) {
|
|
1257
|
+
let t9 = e54?.parentElement;
|
|
1258
|
+
return t9 ? We(t9) : { end: 0, start: 0 };
|
|
1222
1259
|
}
|
|
1223
|
-
function $e(
|
|
1224
|
-
if (!
|
|
1225
|
-
let
|
|
1226
|
-
return Re(
|
|
1260
|
+
function $e(e54) {
|
|
1261
|
+
if (!e54) return 0;
|
|
1262
|
+
let t9 = window.getComputedStyle(e54), r32 = t9.rowGap === "normal" ? t9.gap : t9.rowGap;
|
|
1263
|
+
return Re(r32);
|
|
1227
1264
|
}
|
|
1228
|
-
function Re(
|
|
1229
|
-
if (!
|
|
1230
|
-
let
|
|
1231
|
-
return Number.isFinite(
|
|
1265
|
+
function Re(e54) {
|
|
1266
|
+
if (!e54) return 0;
|
|
1267
|
+
let t9 = Number.parseFloat(e54);
|
|
1268
|
+
return Number.isFinite(t9) ? t9 : 0;
|
|
1232
1269
|
}
|
|
1233
|
-
function Je({ refs:
|
|
1234
|
-
let { streamingTurnRef:
|
|
1235
|
-
l5.current !== null && (window.clearTimeout(l5.current), l5.current = null), S2.current !==
|
|
1236
|
-
l5.current = null, S2.current = false,
|
|
1270
|
+
function Je({ refs: e54, commitScrollState: t9, scheduleStateCommit: r32, scheduleVisibilitySync: n }) {
|
|
1271
|
+
let { streamingTurnRef: o42, autoScrollRef: i3, autoscrollingRef: S2, autoscrollingTimeoutRef: l5, contentRef: d2, defaultScrollPositionAppliedRef: E, itemCountRef: b2, messageElementsRef: C, modeRef: p3, pendingScrollToMessageRef: m5, prependRestoreRef: L, scrollMarginRef: y, scrollPreviousItemPeekRef: u, spacerGapRef: x, spacerHeightRef: Y, spacerRef: k, viewportRef: _ } = e54, G = g.useCallback((c7) => {
|
|
1272
|
+
l5.current !== null && (window.clearTimeout(l5.current), l5.current = null), S2.current !== c7 && (S2.current = c7, t9()), c7 && (l5.current = window.setTimeout(() => {
|
|
1273
|
+
l5.current = null, S2.current = false, t9();
|
|
1237
1274
|
}, ke));
|
|
1238
|
-
}, [
|
|
1275
|
+
}, [t9]), v = g.useCallback((c7) => {
|
|
1239
1276
|
let f9 = k.current;
|
|
1240
1277
|
if (!f9) return;
|
|
1241
|
-
let h = Math.max(0, Math.ceil(
|
|
1278
|
+
let h = Math.max(0, Math.ceil(c7));
|
|
1242
1279
|
Y.current !== h && (Y.current = h, f9.hidden = h === 0, f9.style.height = `${h}px`, f9.style.marginTop = h > 0 ? `${-x.current}px` : "");
|
|
1243
|
-
}, []), H = g.useCallback((
|
|
1280
|
+
}, []), H = g.useCallback((c7, { behavior: f9 = "auto", autoscrolling: h = false } = {}) => {
|
|
1244
1281
|
let P = _.current;
|
|
1245
1282
|
if (!P) return;
|
|
1246
|
-
let V = Math.max(0,
|
|
1283
|
+
let V = Math.max(0, c7);
|
|
1247
1284
|
if (Math.abs(P.scrollTop - V) <= J) {
|
|
1248
|
-
P.scrollTop = V,
|
|
1285
|
+
P.scrollTop = V, t9();
|
|
1249
1286
|
return;
|
|
1250
1287
|
}
|
|
1251
|
-
h && G(true), P.scrollTo({ top: V, behavior: f9 }),
|
|
1252
|
-
}, [
|
|
1288
|
+
h && G(true), P.scrollTo({ top: V, behavior: f9 }), r32();
|
|
1289
|
+
}, [t9, r32, G]), N = g.useCallback(({ behavior: c7 = "auto" } = {}) => _.current ? (v(0), o42.current = null, p3.current = "free-scrolling", H(0, { behavior: c7 }), n(), true) : false, [n, H, v]), ne = g.useCallback(({ behavior: c7 = "auto" } = {}) => {
|
|
1253
1290
|
let f9 = _.current;
|
|
1254
|
-
return f9 ? (v(0),
|
|
1255
|
-
}, [n, H, v]), A = g.useCallback((
|
|
1291
|
+
return f9 ? (v(0), o42.current = null, p3.current = i3.current ? "following-bottom" : "free-scrolling", H(Ke(f9), { autoscrolling: true, behavior: c7 }), n(), true) : false;
|
|
1292
|
+
}, [n, H, v]), A = g.useCallback((c7, { align: f9 = "start", behavior: h = "auto", scrollMargin: P = y.current } = {}, { keepPreviousPeek: V = false } = {}) => {
|
|
1256
1293
|
let z = d2.current, q = _.current;
|
|
1257
|
-
if (!z || !q || !z.contains(
|
|
1258
|
-
let K = ze({ align: f9, element:
|
|
1259
|
-
return v(se), L.current = { element:
|
|
1294
|
+
if (!z || !q || !z.contains(c7)) return false;
|
|
1295
|
+
let K = ze({ align: f9, element: c7, scrollMargin: V ? P + u.current : P, spacer: k.current, viewport: q }), se = qe({ content: z, scrollTop: K, spacer: k.current, viewport: q });
|
|
1296
|
+
return v(se), L.current = { element: c7, viewportTop: te(c7, q) }, p3.current = V ? "anchored-to-message" : "settling-jump", o42.current = V ? c7 : null, H(K, { behavior: h }), n(), true;
|
|
1260
1297
|
}, [n, H, v]), B = g.useCallback(() => {
|
|
1261
|
-
let
|
|
1262
|
-
return !
|
|
1263
|
-
}, [A]), D = g.useCallback((
|
|
1264
|
-
let h = C.current.get(
|
|
1265
|
-
return h ? (E.current = true, A(h, f9) ? (m5.current = null, true) : (m5.current = { messageId:
|
|
1298
|
+
let c7 = o42.current;
|
|
1299
|
+
return !c7 || !c7.isConnected || p3.current !== "anchored-to-message" ? false : A(c7, { align: "start" }, { keepPreviousPeek: true });
|
|
1300
|
+
}, [A]), D = g.useCallback((c7, f9) => {
|
|
1301
|
+
let h = C.current.get(c7);
|
|
1302
|
+
return h ? (E.current = true, A(h, f9) ? (m5.current = null, true) : (m5.current = { messageId: c7, options: f9 }, true)) : b2.current === 0 ? (m5.current = { messageId: c7, options: f9 }, E.current = true, true) : false;
|
|
1266
1303
|
}, [A]);
|
|
1267
1304
|
return { flushPendingScrollToMessage: g.useCallback(() => {
|
|
1268
|
-
let
|
|
1269
|
-
if (!
|
|
1270
|
-
let f9 = C.current.get(
|
|
1271
|
-
return !f9 || !A(f9,
|
|
1305
|
+
let c7 = m5.current;
|
|
1306
|
+
if (!c7) return false;
|
|
1307
|
+
let f9 = C.current.get(c7.messageId);
|
|
1308
|
+
return !f9 || !A(f9, c7.options) ? false : (m5.current = null, E.current = true, true);
|
|
1272
1309
|
}, [A]), reanchorToAnchoredMessage: B, scrollToElement: A, scrollToEnd: ne, scrollToMessage: D, scrollToStart: N };
|
|
1273
1310
|
}
|
|
1274
|
-
function Qe(
|
|
1275
|
-
let
|
|
1276
|
-
return { getSnapshot: () =>
|
|
1277
|
-
|
|
1278
|
-
}, subscribe: (
|
|
1311
|
+
function Qe(e54, t9) {
|
|
1312
|
+
let r32 = e54, n = /* @__PURE__ */ new Set();
|
|
1313
|
+
return { getSnapshot: () => r32, hasListeners: () => n.size > 0, setSnapshot: (o42) => {
|
|
1314
|
+
t9(r32, o42) || (r32 = o42, n.forEach((i3) => i3()));
|
|
1315
|
+
}, subscribe: (o42, i3, S2) => {
|
|
1279
1316
|
let l5 = n.size === 0;
|
|
1280
|
-
return n.add(
|
|
1281
|
-
n.delete(
|
|
1317
|
+
return n.add(o42), l5 && i3?.(), () => {
|
|
1318
|
+
n.delete(o42), n.size === 0 && S2?.();
|
|
1282
1319
|
};
|
|
1283
1320
|
} };
|
|
1284
1321
|
}
|
|
1285
|
-
function Xe(
|
|
1286
|
-
return Qe(
|
|
1322
|
+
function Xe(e54, t9) {
|
|
1323
|
+
return Qe(e54, t9);
|
|
1287
1324
|
}
|
|
1288
1325
|
function Ze() {
|
|
1289
1326
|
return Qe(Q, Tt);
|
|
1290
1327
|
}
|
|
1291
|
-
function et(
|
|
1292
|
-
return
|
|
1328
|
+
function et(e54, t9) {
|
|
1329
|
+
return e54.start === t9.start && e54.end === t9.end;
|
|
1293
1330
|
}
|
|
1294
|
-
function Tt(
|
|
1295
|
-
return
|
|
1331
|
+
function Tt(e54, t9) {
|
|
1332
|
+
return e54.currentAnchorId !== t9.currentAnchorId || e54.visibleMessageIds.length !== t9.visibleMessageIds.length ? false : e54.visibleMessageIds.every((r32, n) => r32 === t9.visibleMessageIds[n]);
|
|
1296
1333
|
}
|
|
1297
|
-
function tt({ autoScroll:
|
|
1298
|
-
let
|
|
1299
|
-
return A.current === null && (A.current = Xe(ge, et)), f9.current === null && (f9.current = Ze()),
|
|
1334
|
+
function tt({ autoScroll: e54, scrollEdgeThreshold: t9, scrollMargin: r32, scrollPreviousItemPeek: n }) {
|
|
1335
|
+
let o42 = g.useRef(e54), i3 = g.useRef(false), S2 = g.useRef(null), l5 = g.useRef(false), d2 = g.useRef(t9), E = g.useRef(0), b2 = g.useRef(null), C = g.useRef(0), p3 = g.useRef(e54 ? "following-bottom" : "free-scrolling"), m5 = g.useRef(/* @__PURE__ */ new Map()), L = g.useRef(null), y = g.useRef(null), u = g.useRef(null), x = g.useRef(n), Y = g.useRef(true), k = g.useRef(null), _ = g.useRef(r32), G = g.useRef(null), v = g.useRef(0), H = g.useRef(0), N = g.useRef(null), ne = g.useRef(null), A = g.useRef(null), B = g.useRef(null), D = g.useRef(null), U = g.useRef(null), c7 = g.useRef(null), f9 = g.useRef(null), h = g.useRef(/* @__PURE__ */ new Set()), P = g.useRef(/* @__PURE__ */ new WeakSet());
|
|
1336
|
+
return A.current === null && (A.current = Xe(ge, et)), f9.current === null && (f9.current = Ze()), o42.current = e54, d2.current = t9, _.current = r32, x.current = n, { autoScrollRef: o42, autoscrollingRef: i3, autoscrollingTimeoutRef: B, streamingTurnRef: u, contentRef: S2, defaultScrollPositionAppliedRef: l5, firstItemRef: b2, itemCountRef: E, lastScrollTopRef: C, messageElementsRef: m5, modeRef: p3, pendingScrollFrameRef: G, pendingScrollToMessageRef: L, prependRestoreRef: y, preserveScrollOnPrependRef: Y, rootRef: k, scrollEdgeThresholdRef: d2, scrollMarginRef: _, scrollPreviousItemPeekRef: x, spacerGapRef: v, spacerHeightRef: H, spacerRef: N, stateFrameRef: ne, stateStore: A.current, viewportRef: D, visibilityFrameRef: U, visibilityObserverRef: c7, visibilityStore: f9.current, visibleMessageIdsRef: h, handledScrollAnchorsRef: P };
|
|
1300
1337
|
}
|
|
1301
|
-
function rt(
|
|
1302
|
-
return g.useCallback((
|
|
1303
|
-
|
|
1304
|
-
}, [
|
|
1338
|
+
function rt(e54, t9) {
|
|
1339
|
+
return g.useCallback((r32) => {
|
|
1340
|
+
e54.current = r32, r32 && t9();
|
|
1341
|
+
}, [e54, t9]);
|
|
1305
1342
|
}
|
|
1306
|
-
function nt({ autoScroll:
|
|
1307
|
-
let i3 = tt({ autoScroll:
|
|
1308
|
-
q.current !==
|
|
1343
|
+
function nt({ autoScroll: e54 = false, defaultScrollPosition: t9 = "end", scrollEdgeThreshold: r32 = xe, scrollPreviousItemPeek: n = Ve, scrollMargin: o42 = _e }) {
|
|
1344
|
+
let i3 = tt({ autoScroll: e54, scrollEdgeThreshold: r32, scrollMargin: o42, scrollPreviousItemPeek: n }), { streamingTurnRef: S2, autoScrollRef: l5, autoscrollingRef: d2, autoscrollingTimeoutRef: E, contentRef: b2, defaultScrollPositionAppliedRef: C, firstItemRef: p3, itemCountRef: m5, lastScrollTopRef: L, messageElementsRef: y, modeRef: u, pendingScrollFrameRef: x, pendingScrollToMessageRef: Y, prependRestoreRef: k, preserveScrollOnPrependRef: _, rootRef: G, scrollEdgeThresholdRef: v, scrollMarginRef: H, scrollPreviousItemPeekRef: N, spacerGapRef: ne, spacerHeightRef: A, spacerRef: B, stateFrameRef: D, stateStore: U, viewportRef: c7, visibilityFrameRef: f9, visibilityObserverRef: h, visibilityStore: P, visibleMessageIdsRef: V, handledScrollAnchorsRef: z } = i3, q = g.useRef(t9);
|
|
1345
|
+
q.current !== t9 && (q.current = t9, C.current = false);
|
|
1309
1346
|
let K = g.useCallback((s4) => {
|
|
1310
|
-
let
|
|
1311
|
-
for (let W of [
|
|
1347
|
+
let a28 = G.current, T = c7.current, O = [s4.start && "start", s4.end && "end"].filter(Boolean).join(" "), ue = d2.current;
|
|
1348
|
+
for (let W of [a28, T]) W && (O ? W.setAttribute("data-scrollable", O) : W.removeAttribute("data-scrollable"), W.toggleAttribute("data-autoscrolling", ue));
|
|
1312
1349
|
}, []), se = g.useCallback((s4) => {
|
|
1313
|
-
let
|
|
1314
|
-
L.current =
|
|
1350
|
+
let a28 = c7.current?.scrollTop ?? 0, T = a28 < L.current - J;
|
|
1351
|
+
L.current = a28, l5.current && !s4.end && u.current !== "settling-jump" && u.current !== "anchored-to-message" ? u.current = "following-bottom" : u.current === "following-bottom" && s4.end && T && !d2.current && (u.current = "free-scrolling");
|
|
1315
1352
|
}, []), F = g.useCallback(() => {
|
|
1316
|
-
let s4 = De({ content: b2.current, scrollEdgeThreshold: v.current, spacer: B.current, viewport:
|
|
1353
|
+
let s4 = De({ content: b2.current, scrollEdgeThreshold: v.current, spacer: B.current, viewport: c7.current });
|
|
1317
1354
|
se(s4);
|
|
1318
|
-
let
|
|
1319
|
-
K(
|
|
1355
|
+
let a28 = u.current === "following-bottom" ? { ...s4, end: false } : s4;
|
|
1356
|
+
K(a28), U.setSnapshot(a28);
|
|
1320
1357
|
}, [se, U, K]), oe = g.useCallback(() => {
|
|
1321
1358
|
D.current === null && (D.current = window.requestAnimationFrame(() => {
|
|
1322
1359
|
D.current = null, F();
|
|
1323
1360
|
}));
|
|
1324
1361
|
}, [F]), w2 = g.useCallback(() => {
|
|
1325
1362
|
P.hasListeners() && f9.current === null && (f9.current = window.requestAnimationFrame(() => {
|
|
1326
|
-
f9.current = null, P.hasListeners() && P.setSnapshot(Fe({ content: b2.current, scrollMargin: H.current, scrollPreviousItemPeek: N.current, spacer: B.current, viewport:
|
|
1363
|
+
f9.current = null, P.hasListeners() && P.setSnapshot(Fe({ content: b2.current, scrollMargin: H.current, scrollPreviousItemPeek: N.current, spacer: B.current, viewport: c7.current, visibleMessageIds: V.current }));
|
|
1327
1364
|
}));
|
|
1328
1365
|
}, [P]), { flushPendingScrollToMessage: ce, reanchorToAnchoredMessage: me, scrollToElement: le, scrollToEnd: I2, scrollToMessage: Me, scrollToStart: ae } = Je({ refs: i3, commitScrollState: F, scheduleStateCommit: oe, scheduleVisibilitySync: w2 }), de = g.useCallback(() => {
|
|
1329
|
-
let s4 = k.current,
|
|
1330
|
-
if (!s4 || !
|
|
1331
|
-
let O = te(s4.element,
|
|
1332
|
-
return Math.abs(O) <= J ? false : (
|
|
1366
|
+
let s4 = k.current, a28 = c7.current;
|
|
1367
|
+
if (!s4 || !a28 || !s4.element.isConnected) return false;
|
|
1368
|
+
let O = te(s4.element, a28) - s4.viewportTop;
|
|
1369
|
+
return Math.abs(O) <= J ? false : (a28.scrollTop += O, s4.viewportTop = te(s4.element, a28), oe(), w2(), true);
|
|
1333
1370
|
}, [oe, w2]), Z = g.useCallback(() => {
|
|
1334
|
-
let s4 = b2.current,
|
|
1335
|
-
if (!s4 || !
|
|
1371
|
+
let s4 = b2.current, a28 = c7.current;
|
|
1372
|
+
if (!s4 || !a28) {
|
|
1336
1373
|
k.current = null;
|
|
1337
1374
|
return;
|
|
1338
1375
|
}
|
|
1339
|
-
let T = Ye({ content: s4, spacer: B.current, viewport:
|
|
1340
|
-
k.current = T ? { element: T, viewportTop: te(T,
|
|
1376
|
+
let T = Ye({ content: s4, spacer: B.current, viewport: a28 });
|
|
1377
|
+
k.current = T ? { element: T, viewportTop: te(T, a28) } : null;
|
|
1341
1378
|
}, []), be = g.useCallback(() => {
|
|
1342
1379
|
x.current === null && (x.current = window.requestAnimationFrame(() => {
|
|
1343
1380
|
x.current = null, ce() && Z();
|
|
1344
1381
|
}));
|
|
1345
1382
|
}, [Z, ce]), ie = g.useCallback(() => {
|
|
1346
|
-
if (!
|
|
1383
|
+
if (!t9 || C.current || m5.current === 0) return false;
|
|
1347
1384
|
let s4 = false;
|
|
1348
|
-
if (
|
|
1349
|
-
let
|
|
1350
|
-
if (!
|
|
1385
|
+
if (t9 === "last-anchor") {
|
|
1386
|
+
let a28 = b2.current, T = c7.current, O = a28 && T ? Ue(ee(a28, B.current)) : null;
|
|
1387
|
+
if (!a28 || !T || !O) s4 = I2({ behavior: "auto" });
|
|
1351
1388
|
else {
|
|
1352
1389
|
let ue = pe(O, T);
|
|
1353
|
-
s4 = Se({ content:
|
|
1390
|
+
s4 = Se({ content: a28, spacer: B.current, viewport: T }) - ue <= T.clientHeight ? I2({ behavior: "auto" }) : le(O, { align: "start" }, { keepPreviousPeek: true });
|
|
1354
1391
|
}
|
|
1355
|
-
} else s4 =
|
|
1392
|
+
} else s4 = t9 === "end" ? I2({ behavior: "auto" }) : ae({ behavior: "auto" });
|
|
1356
1393
|
return s4 ? (C.current = true, true) : false;
|
|
1357
|
-
}, [
|
|
1394
|
+
}, [t9, le, I2, ae]), Te = g.useCallback(() => {
|
|
1358
1395
|
let s4 = b2.current;
|
|
1359
1396
|
if (!s4) return;
|
|
1360
|
-
let
|
|
1361
|
-
m5.current =
|
|
1397
|
+
let a28 = ee(s4, B.current), T = m5.current, O = p3.current;
|
|
1398
|
+
m5.current = a28.length, p3.current = a28[0] ?? null, (() => {
|
|
1362
1399
|
if (ce()) return;
|
|
1363
1400
|
if (T === 0) {
|
|
1364
|
-
if (ie() ||
|
|
1401
|
+
if (ie() || a28.length > 0 && l5.current && I2({ behavior: "auto" })) return;
|
|
1365
1402
|
F(), w2();
|
|
1366
1403
|
return;
|
|
1367
1404
|
}
|
|
1368
|
-
let W = O ?
|
|
1405
|
+
let W = O ? a28.indexOf(O) : -1;
|
|
1369
1406
|
if (_.current && W > 0) {
|
|
1370
1407
|
de();
|
|
1371
1408
|
return;
|
|
1372
1409
|
}
|
|
1373
|
-
if (
|
|
1374
|
-
let $ = je(
|
|
1410
|
+
if (a28.length > T) {
|
|
1411
|
+
let $ = je(a28, T);
|
|
1375
1412
|
if ($) {
|
|
1376
|
-
if (l5.current && u.current === "following-bottom" && Ne(
|
|
1413
|
+
if (l5.current && u.current === "following-bottom" && Ne(a28, T)) {
|
|
1377
1414
|
I2({ behavior: "auto" });
|
|
1378
1415
|
return;
|
|
1379
1416
|
}
|
|
@@ -1381,8 +1418,8 @@ function nt({ autoScroll: e53 = false, defaultScrollPosition: t8 = "end", scroll
|
|
|
1381
1418
|
return;
|
|
1382
1419
|
}
|
|
1383
1420
|
}
|
|
1384
|
-
if (
|
|
1385
|
-
let $ = Ge(
|
|
1421
|
+
if (a28.length === T) {
|
|
1422
|
+
let $ = Ge(a28, z.current);
|
|
1386
1423
|
if ($) {
|
|
1387
1424
|
le($, { align: "start" }, { keepPreviousPeek: true }), z.current.add($);
|
|
1388
1425
|
return;
|
|
@@ -1402,76 +1439,76 @@ function nt({ autoScroll: e53 = false, defaultScrollPosition: t8 = "end", scroll
|
|
|
1402
1439
|
}
|
|
1403
1440
|
oe(), w2();
|
|
1404
1441
|
}, [me, oe, w2, I2]), ve = g.useCallback(() => {
|
|
1405
|
-
let s4 =
|
|
1442
|
+
let s4 = c7.current;
|
|
1406
1443
|
if (!(!s4 || !P.hasListeners())) {
|
|
1407
1444
|
if (typeof IntersectionObserver > "u") {
|
|
1408
1445
|
w2();
|
|
1409
1446
|
return;
|
|
1410
1447
|
}
|
|
1411
|
-
h.current || (h.current = new IntersectionObserver((
|
|
1412
|
-
for (let T of
|
|
1448
|
+
h.current || (h.current = new IntersectionObserver((a28) => {
|
|
1449
|
+
for (let T of a28) {
|
|
1413
1450
|
let O = T.target.dataset.messageId;
|
|
1414
1451
|
O && (T.isIntersecting ? V.current.add(O) : V.current.delete(O));
|
|
1415
1452
|
}
|
|
1416
1453
|
w2();
|
|
1417
|
-
}, { root: s4, rootMargin: `${-(H.current + N.current)}px 0px 0px 0px`, threshold: [0, 0.01, 0.5, 1] })), y.current.forEach((
|
|
1418
|
-
h.current?.observe(
|
|
1454
|
+
}, { root: s4, rootMargin: `${-(H.current + N.current)}px 0px 0px 0px`, threshold: [0, 0.01, 0.5, 1] })), y.current.forEach((a28) => {
|
|
1455
|
+
h.current?.observe(a28);
|
|
1419
1456
|
}), w2();
|
|
1420
1457
|
}
|
|
1421
1458
|
}, [w2, P]), he = g.useCallback(() => {
|
|
1422
1459
|
f9.current !== null && (window.cancelAnimationFrame(f9.current), f9.current = null), h.current?.disconnect(), h.current = null, V.current.clear(), P.setSnapshot(Q);
|
|
1423
|
-
}, [P]), pt = g.useCallback((s4,
|
|
1424
|
-
if (
|
|
1425
|
-
y.current.set(s4,
|
|
1460
|
+
}, [P]), pt = g.useCallback((s4, a28, T) => {
|
|
1461
|
+
if (a28) {
|
|
1462
|
+
y.current.set(s4, a28), h.current?.observe(a28), w2(), Y.current?.messageId === s4 && be();
|
|
1426
1463
|
return;
|
|
1427
1464
|
}
|
|
1428
1465
|
T && y.current.get(s4) === T && (y.current.delete(s4), V.current.delete(s4), h.current?.unobserve(T), w2());
|
|
1429
1466
|
}, [be, w2]), Le = g.useCallback(() => {
|
|
1430
1467
|
(u.current === "following-bottom" || u.current === "anchored-to-message" || u.current === "settling-jump") && (S2.current = null, u.current = "free-scrolling");
|
|
1431
|
-
}, []), Ce = g.useCallback(() => K(U.getSnapshot()), [U, K]), Pe = rt(G, Ce), we = rt(
|
|
1468
|
+
}, []), Ce = g.useCallback(() => K(U.getSnapshot()), [U, K]), Pe = rt(G, Ce), we = rt(c7, Ce), Oe = g.useCallback((s4) => {
|
|
1432
1469
|
b2.current = s4;
|
|
1433
1470
|
}, []), ye = g.useCallback((s4) => {
|
|
1434
1471
|
B.current = s4, ne.current = $e(s4?.parentElement ?? null);
|
|
1435
1472
|
}, []), He = g.useCallback(() => {
|
|
1436
1473
|
F(), w2(), Z();
|
|
1437
|
-
}, [Z, F, w2]), mt = g.useMemo(() => ({ handleContentChange: Te, handleResize: Ee, observeVisibility: ve, preserveScrollOnPrependRef: _, scrollToEnd: I2, scrollToMessage: Me, scrollToStart: ae, setContentElement: Oe, setRootElement: Pe, setSpacerElement: ye, setViewportElement: we, stateStore: U, syncAfterScroll: He, unobserveVisibility: he, userScrollIntent: Le, viewportRef:
|
|
1474
|
+
}, [Z, F, w2]), mt = g.useMemo(() => ({ handleContentChange: Te, handleResize: Ee, observeVisibility: ve, preserveScrollOnPrependRef: _, scrollToEnd: I2, scrollToMessage: Me, scrollToStart: ae, setContentElement: Oe, setRootElement: Pe, setSpacerElement: ye, setViewportElement: we, stateStore: U, syncAfterScroll: He, unobserveVisibility: he, userScrollIntent: Le, viewportRef: c7, visibilityStore: P }), [Te, Ee, ve, I2, Me, ae, Oe, Pe, ye, we, U, He, he, Le, P]);
|
|
1438
1475
|
return g.useLayoutEffect(() => {
|
|
1439
1476
|
ie();
|
|
1440
1477
|
}, [ie]), g.useEffect(() => () => {
|
|
1441
1478
|
D.current !== null && (window.cancelAnimationFrame(D.current), D.current = null), f9.current !== null && (window.cancelAnimationFrame(f9.current), f9.current = null), E.current !== null && (window.clearTimeout(E.current), E.current = null), x.current !== null && (window.cancelAnimationFrame(x.current), x.current = null), h.current?.disconnect(), h.current = null;
|
|
1442
1479
|
}, []), g.useLayoutEffect(() => {
|
|
1443
|
-
if (
|
|
1480
|
+
if (e54 && u.current === "following-bottom" && m5.current > 0) {
|
|
1444
1481
|
I2({ behavior: "auto" });
|
|
1445
1482
|
return;
|
|
1446
1483
|
}
|
|
1447
1484
|
F();
|
|
1448
|
-
}, [
|
|
1485
|
+
}, [e54, F, I2]), { context: mt, registerMessage: pt };
|
|
1449
1486
|
}
|
|
1450
|
-
function lt(
|
|
1451
|
-
let
|
|
1452
|
-
return
|
|
1487
|
+
function lt(e54) {
|
|
1488
|
+
let t9 = g.useRef(e54);
|
|
1489
|
+
return t9.current = e54, t9;
|
|
1453
1490
|
}
|
|
1454
1491
|
var st = g.createContext(null);
|
|
1455
1492
|
var ct = g.createContext(null);
|
|
1456
1493
|
function X2() {
|
|
1457
|
-
let
|
|
1458
|
-
if (!
|
|
1459
|
-
return
|
|
1494
|
+
let e54 = g.useContext(st);
|
|
1495
|
+
if (!e54) throw new Error("useMessageScroller must be used within a MessageScroller.");
|
|
1496
|
+
return e54;
|
|
1460
1497
|
}
|
|
1461
1498
|
function Et() {
|
|
1462
|
-
let
|
|
1463
|
-
if (!
|
|
1464
|
-
return
|
|
1499
|
+
let e54 = g.useContext(ct);
|
|
1500
|
+
if (!e54) throw new Error("MessageScrollerItem must be used within a MessageScroller.");
|
|
1501
|
+
return e54;
|
|
1465
1502
|
}
|
|
1466
|
-
function at({ autoScroll:
|
|
1467
|
-
let { context: S2, registerMessage: l5 } = nt({ autoScroll:
|
|
1468
|
-
return jsx2(st.Provider, { value: S2, children: jsx2(ct.Provider, { value: l5, children:
|
|
1503
|
+
function at({ autoScroll: e54 = false, children: t9, defaultScrollPosition: r32 = "end", scrollEdgeThreshold: n, scrollPreviousItemPeek: o42, scrollMargin: i3 }) {
|
|
1504
|
+
let { context: S2, registerMessage: l5 } = nt({ autoScroll: e54, defaultScrollPosition: r32, scrollEdgeThreshold: n, scrollPreviousItemPeek: o42, scrollMargin: i3 });
|
|
1505
|
+
return jsx2(st.Provider, { value: S2, children: jsx2(ct.Provider, { value: l5, children: t9 }) });
|
|
1469
1506
|
}
|
|
1470
|
-
function it({ children:
|
|
1471
|
-
let { setRootElement:
|
|
1472
|
-
return jsx2("div", { ref:
|
|
1507
|
+
function it({ children: e54, ...t9 }) {
|
|
1508
|
+
let { setRootElement: r32 } = X2();
|
|
1509
|
+
return jsx2("div", { ref: r32, ...t9, children: e54 });
|
|
1473
1510
|
}
|
|
1474
|
-
function ut({ "aria-label":
|
|
1511
|
+
function ut({ "aria-label": e54, children: t9, onKeyDown: r32, onScroll: n, onTouchMove: o42, onWheel: i3, preserveScrollOnPrepend: S2 = true, ref: l5, role: d2, tabIndex: E, ...b2 }) {
|
|
1475
1512
|
let { handleResize: C, preserveScrollOnPrependRef: p3, setViewportElement: m5, syncAfterScroll: L, userScrollIntent: y, viewportRef: u } = X2();
|
|
1476
1513
|
p3.current = S2;
|
|
1477
1514
|
let x = g.useCallback((v) => {
|
|
@@ -1484,10 +1521,10 @@ function ut({ "aria-label": e53, children: t8, onKeyDown: r28, onScroll: n, onTo
|
|
|
1484
1521
|
y(), i3?.(v);
|
|
1485
1522
|
}
|
|
1486
1523
|
function _(v) {
|
|
1487
|
-
y(),
|
|
1524
|
+
y(), o42?.(v);
|
|
1488
1525
|
}
|
|
1489
1526
|
function G(v) {
|
|
1490
|
-
Be.has(v.key) && y(),
|
|
1527
|
+
Be.has(v.key) && y(), r32?.(v);
|
|
1491
1528
|
}
|
|
1492
1529
|
return g.useEffect(() => {
|
|
1493
1530
|
let v = u.current;
|
|
@@ -1498,12 +1535,12 @@ function ut({ "aria-label": e53, children: t8, onKeyDown: r28, onScroll: n, onTo
|
|
|
1498
1535
|
return N.observe(v), () => {
|
|
1499
1536
|
window.cancelAnimationFrame(H), N.disconnect();
|
|
1500
1537
|
};
|
|
1501
|
-
}, [C, u]), jsx2("div", { ref: x, role: d2 ?? "region", "aria-label":
|
|
1538
|
+
}, [C, u]), jsx2("div", { ref: x, role: d2 ?? "region", "aria-label": e54 ?? "Messages", tabIndex: E ?? 0, onKeyDown: G, onScroll: Y, onTouchMove: _, onWheel: k, ...b2, children: t9 });
|
|
1502
1539
|
}
|
|
1503
|
-
function ft({ "aria-relevant":
|
|
1540
|
+
function ft({ "aria-relevant": e54, children: t9, ref: r32, role: n, spacerClassName: o42, ...i3 }) {
|
|
1504
1541
|
let { handleContentChange: S2, handleResize: l5, setContentElement: d2, setSpacerElement: E } = X2(), b2 = g.useRef(null), C = g.useCallback((p3) => {
|
|
1505
|
-
b2.current = p3, d2(p3), f8(
|
|
1506
|
-
}, [
|
|
1542
|
+
b2.current = p3, d2(p3), f8(r32)?.(p3);
|
|
1543
|
+
}, [r32, d2]);
|
|
1507
1544
|
return g.useLayoutEffect(() => {
|
|
1508
1545
|
let p3 = b2.current;
|
|
1509
1546
|
if (!p3 || (S2(), typeof MutationObserver > "u")) return;
|
|
@@ -1520,23 +1557,23 @@ function ft({ "aria-relevant": e53, children: t8, ref: r28, role: n, spacerClass
|
|
|
1520
1557
|
return L.observe(p3), () => {
|
|
1521
1558
|
window.cancelAnimationFrame(m5), L.disconnect();
|
|
1522
1559
|
};
|
|
1523
|
-
}, [l5]), jsxs("div", { ref: C, role: n ?? "log", "aria-relevant":
|
|
1560
|
+
}, [l5]), jsxs("div", { ref: C, role: n ?? "log", "aria-relevant": e54 ?? "additions", ...i3, children: [t9, jsx2("div", { ref: E, "aria-hidden": "true", "data-message-scroller-spacer": "", hidden: true, className: o42 })] });
|
|
1524
1561
|
}
|
|
1525
|
-
function gt({ messageId:
|
|
1526
|
-
let
|
|
1562
|
+
function gt({ messageId: e54, ref: t9, scrollAnchor: r32 = false, ...n }) {
|
|
1563
|
+
let o42 = Et(), i3 = g.useRef(null), S2 = g.useCallback((l5) => {
|
|
1527
1564
|
let d2 = i3.current;
|
|
1528
|
-
i3.current = l5,
|
|
1529
|
-
}, [
|
|
1530
|
-
return jsx2("div", { ref: S2, "data-message-id":
|
|
1565
|
+
i3.current = l5, e54 && o42(e54, l5, d2), f8(t9)?.(l5);
|
|
1566
|
+
}, [e54, t9, o42]);
|
|
1567
|
+
return jsx2("div", { ref: S2, "data-message-id": e54, "data-scroll-anchor": r32 ? "true" : "false", ...n });
|
|
1531
1568
|
}
|
|
1532
|
-
function St({ behavior:
|
|
1569
|
+
function St({ behavior: e54 = "smooth", children: t9, direction: r32 = "end", onClick: n, render: o42, tabIndex: i3, type: S2 = "button", ...l5 }) {
|
|
1533
1570
|
let { scrollToEnd: d2, scrollToStart: E, stateStore: b$1 } = X2(), C = lt(n), p3 = g.useCallback((u) => b$1.subscribe(u), [b$1]), m5 = g.useCallback(() => {
|
|
1534
1571
|
let u = b$1.getSnapshot();
|
|
1535
|
-
return
|
|
1536
|
-
}, [
|
|
1537
|
-
L && (C.current?.(u), u.defaultPrevented || (u.currentTarget.blur(),
|
|
1538
|
-
}, [
|
|
1539
|
-
return S({ defaultTagName: "button", props: d({ type: S2, inert: !L, tabIndex: L ? i3 : -1, children:
|
|
1572
|
+
return r32 === "start" ? u.start : u.end;
|
|
1573
|
+
}, [r32, b$1]), L = g.useSyncExternalStore(p3, m5, m5), y = g.useCallback((u) => {
|
|
1574
|
+
L && (C.current?.(u), u.defaultPrevented || (u.currentTarget.blur(), r32 === "start" ? E({ behavior: e54 }) : d2({ behavior: e54 })));
|
|
1575
|
+
}, [e54, r32, L, C, d2, E]);
|
|
1576
|
+
return S({ defaultTagName: "button", props: d({ type: S2, inert: !L, tabIndex: L ? i3 : -1, children: t9 ?? jsxs("span", { children: ["Scroll to ", r32] }), onClick: y }, l5), render: o42, state: { active: L, direction: r32 }, stateAttributesMapping: { active: (u) => ({ "data-active": u ? "true" : "false" }) } });
|
|
1540
1577
|
}
|
|
1541
1578
|
var $t = { Provider: at, Root: it, Viewport: ut, Content: ft, Item: gt, Button: St };
|
|
1542
1579
|
|
|
@@ -1775,7 +1812,7 @@ var use = React2[" use ".trim().toString()];
|
|
|
1775
1812
|
// ../../apps/web/src/components/ui/button.tsx
|
|
1776
1813
|
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
1777
1814
|
var buttonVariants = cva(
|
|
1778
|
-
"group/button inline-flex shrink-0 items-center justify-center rounded-full border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1815
|
+
"group/button inline-flex shrink-0 items-center justify-center rounded-full border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none touch-manipulation focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1779
1816
|
{
|
|
1780
1817
|
variants: {
|
|
1781
1818
|
variant: {
|
|
@@ -1852,7 +1889,7 @@ function useIsResizing(target) {
|
|
|
1852
1889
|
}
|
|
1853
1890
|
|
|
1854
1891
|
// ../../apps/web/src/components/ui/message-scroller.tsx
|
|
1855
|
-
import { Fragment as
|
|
1892
|
+
import { Fragment as Fragment24, jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
1856
1893
|
function MessageScrollerProvider({
|
|
1857
1894
|
autoScroll = true,
|
|
1858
1895
|
...props
|
|
@@ -2022,7 +2059,7 @@ function MessageScrollerButton({
|
|
|
2022
2059
|
),
|
|
2023
2060
|
render: render ?? /* @__PURE__ */ jsx4(Button, { variant, size }),
|
|
2024
2061
|
...props,
|
|
2025
|
-
children: children ?? /* @__PURE__ */ jsxs2(
|
|
2062
|
+
children: children ?? /* @__PURE__ */ jsxs2(Fragment24, { children: [
|
|
2026
2063
|
/* @__PURE__ */ jsx4(ArrowDown, {}),
|
|
2027
2064
|
/* @__PURE__ */ jsx4("span", { className: "sr-only", children: direction === "end" ? "Scroll to end" : "Scroll to start" })
|
|
2028
2065
|
] })
|
|
@@ -2110,9 +2147,9 @@ import {
|
|
|
2110
2147
|
} from "react";
|
|
2111
2148
|
|
|
2112
2149
|
// src/next-image-shim.tsx
|
|
2113
|
-
import { forwardRef as
|
|
2150
|
+
import { forwardRef as forwardRef25 } from "react";
|
|
2114
2151
|
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
2115
|
-
var Image =
|
|
2152
|
+
var Image = forwardRef25(function Image2({
|
|
2116
2153
|
unoptimized: _unoptimized,
|
|
2117
2154
|
priority: _priority,
|
|
2118
2155
|
quality: _quality,
|
|
@@ -2126,8 +2163,11 @@ var Image = forwardRef24(function Image2({
|
|
|
2126
2163
|
});
|
|
2127
2164
|
var next_image_shim_default = Image;
|
|
2128
2165
|
|
|
2166
|
+
// ../../apps/web/src/components/attachments/attachment-image.tsx
|
|
2167
|
+
import { jsx as jsx6 } from "react/jsx-runtime";
|
|
2168
|
+
|
|
2129
2169
|
// ../../apps/web/src/components/attachments/attachment-draft-chip.tsx
|
|
2130
|
-
import { jsx as
|
|
2170
|
+
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
2131
2171
|
var KIND_ICONS = {
|
|
2132
2172
|
image: ImageSquare,
|
|
2133
2173
|
video: Play,
|
|
@@ -2153,7 +2193,7 @@ function AttachmentDraftChip({
|
|
|
2153
2193
|
draft.previewUrl ? (
|
|
2154
2194
|
// Object URLs cannot be optimised, and there is nothing to optimise:
|
|
2155
2195
|
// the file has not left the browser.
|
|
2156
|
-
/* @__PURE__ */
|
|
2196
|
+
/* @__PURE__ */ jsx7(
|
|
2157
2197
|
next_image_shim_default,
|
|
2158
2198
|
{
|
|
2159
2199
|
src: draft.previewUrl,
|
|
@@ -2164,7 +2204,7 @@ function AttachmentDraftChip({
|
|
|
2164
2204
|
className: "size-8 shrink-0 rounded-md object-cover"
|
|
2165
2205
|
}
|
|
2166
2206
|
)
|
|
2167
|
-
) : /* @__PURE__ */
|
|
2207
|
+
) : /* @__PURE__ */ jsx7("span", { className: "grid size-8 shrink-0 place-items-center rounded-md bg-muted", children: /* @__PURE__ */ jsx7(
|
|
2168
2208
|
Glyph,
|
|
2169
2209
|
{
|
|
2170
2210
|
className: cn(
|
|
@@ -2174,8 +2214,8 @@ function AttachmentDraftChip({
|
|
|
2174
2214
|
}
|
|
2175
2215
|
) }),
|
|
2176
2216
|
/* @__PURE__ */ jsxs3("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
2177
|
-
/* @__PURE__ */
|
|
2178
|
-
/* @__PURE__ */
|
|
2217
|
+
/* @__PURE__ */ jsx7("p", { className: "truncate text-xs font-medium", children: draft.name }),
|
|
2218
|
+
/* @__PURE__ */ jsx7(
|
|
2179
2219
|
"p",
|
|
2180
2220
|
{
|
|
2181
2221
|
className: cn(
|
|
@@ -2186,7 +2226,7 @@ function AttachmentDraftChip({
|
|
|
2186
2226
|
}
|
|
2187
2227
|
)
|
|
2188
2228
|
] }),
|
|
2189
|
-
/* @__PURE__ */
|
|
2229
|
+
/* @__PURE__ */ jsx7(
|
|
2190
2230
|
Button,
|
|
2191
2231
|
{
|
|
2192
2232
|
type: "button",
|
|
@@ -2195,7 +2235,7 @@ function AttachmentDraftChip({
|
|
|
2195
2235
|
onClick: onRemove,
|
|
2196
2236
|
"aria-label": `Remove ${draft.name}`,
|
|
2197
2237
|
className: "shrink-0 rounded-full text-muted-foreground",
|
|
2198
|
-
children: /* @__PURE__ */
|
|
2238
|
+
children: /* @__PURE__ */ jsx7(X, {})
|
|
2199
2239
|
}
|
|
2200
2240
|
)
|
|
2201
2241
|
]
|
|
@@ -2206,6 +2246,16 @@ function AttachmentDraftChip({
|
|
|
2206
2246
|
// ../../apps/web/src/components/attachments/use-attachment-drafts.ts
|
|
2207
2247
|
import { useEffect as useEffect4, useRef as useRef4, useState as useState3 } from "react";
|
|
2208
2248
|
var MAX_BYTES = 25 * 1024 * 1024;
|
|
2249
|
+
var UNSAFE_TYPES = [
|
|
2250
|
+
"text/html",
|
|
2251
|
+
"application/xhtml+xml",
|
|
2252
|
+
"image/svg+xml",
|
|
2253
|
+
"text/xsl",
|
|
2254
|
+
"application/xslt+xml"
|
|
2255
|
+
];
|
|
2256
|
+
function isUnsafeType(type) {
|
|
2257
|
+
return UNSAFE_TYPES.includes(type.split(";")[0].trim().toLowerCase());
|
|
2258
|
+
}
|
|
2209
2259
|
var nextDraftId = 0;
|
|
2210
2260
|
function formatFileSize(bytes) {
|
|
2211
2261
|
if (bytes < 1024) return `${bytes} B`;
|
|
@@ -2218,6 +2268,11 @@ function formatFileSize(bytes) {
|
|
|
2218
2268
|
}
|
|
2219
2269
|
return `${value < 10 ? value.toFixed(1) : Math.round(value)} ${units[unit]}`;
|
|
2220
2270
|
}
|
|
2271
|
+
var KIND_NAMES = {
|
|
2272
|
+
image: "pictures",
|
|
2273
|
+
video: "videos",
|
|
2274
|
+
file: "files"
|
|
2275
|
+
};
|
|
2221
2276
|
function attachmentKindOf(type) {
|
|
2222
2277
|
if (type.startsWith("image/")) return "image";
|
|
2223
2278
|
if (type.startsWith("video/")) return "video";
|
|
@@ -2226,7 +2281,10 @@ function attachmentKindOf(type) {
|
|
|
2226
2281
|
function release(draft) {
|
|
2227
2282
|
if (draft.previewUrl) URL.revokeObjectURL(draft.previewUrl);
|
|
2228
2283
|
}
|
|
2229
|
-
function useAttachmentDrafts(
|
|
2284
|
+
function useAttachmentDrafts({
|
|
2285
|
+
accept,
|
|
2286
|
+
max
|
|
2287
|
+
} = {}) {
|
|
2230
2288
|
const [drafts, setDrafts] = useState3([]);
|
|
2231
2289
|
const draftsRef = useRef4(drafts);
|
|
2232
2290
|
useEffect4(() => {
|
|
@@ -2234,17 +2292,21 @@ function useAttachmentDrafts() {
|
|
|
2234
2292
|
}, [drafts]);
|
|
2235
2293
|
useEffect4(() => () => draftsRef.current.forEach(release), []);
|
|
2236
2294
|
function add(files) {
|
|
2237
|
-
const picked = Array.from(files).map((file) => {
|
|
2295
|
+
const picked = Array.from(files).map((file, index) => {
|
|
2238
2296
|
const isTooBig = file.size > MAX_BYTES;
|
|
2297
|
+
const isUnsafe = isUnsafeType(file.type);
|
|
2239
2298
|
const kind = attachmentKindOf(file.type);
|
|
2299
|
+
const isWrongKind = accept !== void 0 && kind !== accept;
|
|
2300
|
+
const isOverCap = max !== void 0 && drafts.length + index >= max;
|
|
2301
|
+
const error = isTooBig ? `Larger than the ${formatFileSize(MAX_BYTES)} limit` : isUnsafe ? "This kind of file cannot be sent" : isWrongKind ? `Only ${KIND_NAMES[accept]} can go here` : isOverCap ? `Only ${max} at a time` : null;
|
|
2240
2302
|
return {
|
|
2241
2303
|
id: `draft-${nextDraftId += 1}`,
|
|
2242
2304
|
file,
|
|
2243
2305
|
name: file.name,
|
|
2244
2306
|
size: formatFileSize(file.size),
|
|
2245
2307
|
kind,
|
|
2246
|
-
previewUrl: kind === "image" &&
|
|
2247
|
-
error
|
|
2308
|
+
previewUrl: kind === "image" && error === null ? URL.createObjectURL(file) : null,
|
|
2309
|
+
error
|
|
2248
2310
|
};
|
|
2249
2311
|
});
|
|
2250
2312
|
setDrafts([...drafts, ...picked]);
|
|
@@ -2266,7 +2328,9 @@ function useAttachmentDrafts() {
|
|
|
2266
2328
|
/** The originals, in the order they were picked. */
|
|
2267
2329
|
files: drafts.map((draft) => draft.file),
|
|
2268
2330
|
/** True while something in the list cannot be sent. */
|
|
2269
|
-
hasBlocker: drafts.some((draft) => draft.error !== null)
|
|
2331
|
+
hasBlocker: drafts.some((draft) => draft.error !== null),
|
|
2332
|
+
/** True once the cap is reached, for a picker that should go quiet. */
|
|
2333
|
+
isFull: max !== void 0 && drafts.length >= max
|
|
2270
2334
|
};
|
|
2271
2335
|
}
|
|
2272
2336
|
|
|
@@ -2319,7 +2383,7 @@ function useAttachmentTarget({
|
|
|
2319
2383
|
}
|
|
2320
2384
|
|
|
2321
2385
|
// ../../apps/web/src/components/support-widget/widget-button.tsx
|
|
2322
|
-
import { jsx as
|
|
2386
|
+
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
2323
2387
|
var widgetButtonVariants = cva(
|
|
2324
2388
|
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-all outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
2325
2389
|
{
|
|
@@ -2357,7 +2421,7 @@ function WidgetButton({
|
|
|
2357
2421
|
...props
|
|
2358
2422
|
}) {
|
|
2359
2423
|
const Comp = asChild ? dist_exports.Root : "button";
|
|
2360
|
-
return /* @__PURE__ */
|
|
2424
|
+
return /* @__PURE__ */ jsx8(
|
|
2361
2425
|
Comp,
|
|
2362
2426
|
{
|
|
2363
2427
|
"data-slot": "widget-button",
|
|
@@ -2371,7 +2435,7 @@ function WidgetButton({
|
|
|
2371
2435
|
|
|
2372
2436
|
// ../../apps/web/src/components/ui/text-field.ts
|
|
2373
2437
|
var TEXT_FIELD_SHELL = [
|
|
2374
|
-
"rounded-lg border border-input bg-transparent text-sm transition-[color,box-shadow] outline-none dark:bg-input/30",
|
|
2438
|
+
"rounded-lg border border-input bg-transparent text-sm max-sm:text-base transition-[color,box-shadow] outline-none dark:bg-input/30",
|
|
2375
2439
|
"placeholder:text-muted-foreground",
|
|
2376
2440
|
// Focus recolours the hairline rather than adding a ring on top of it, so
|
|
2377
2441
|
// the outline stays exactly 1px and nothing swells on click.
|
|
@@ -2381,14 +2445,14 @@ var TEXT_FIELD_SHELL = [
|
|
|
2381
2445
|
].join(" ");
|
|
2382
2446
|
|
|
2383
2447
|
// ../../apps/web/src/components/ui/textarea.tsx
|
|
2384
|
-
import { jsx as
|
|
2448
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
2385
2449
|
function Textarea({ className, ...props }) {
|
|
2386
|
-
return /* @__PURE__ */
|
|
2450
|
+
return /* @__PURE__ */ jsx9(
|
|
2387
2451
|
"textarea",
|
|
2388
2452
|
{
|
|
2389
2453
|
"data-slot": "textarea",
|
|
2390
2454
|
className: cn(
|
|
2391
|
-
"field-sizing-content w-full resize-none bg-transparent text-sm outline-none",
|
|
2455
|
+
"field-sizing-content w-full resize-none bg-transparent text-sm outline-none max-sm:text-base",
|
|
2392
2456
|
"placeholder:text-muted-foreground",
|
|
2393
2457
|
"disabled:pointer-events-none disabled:opacity-50",
|
|
2394
2458
|
className
|
|
@@ -2469,13 +2533,13 @@ var LOGO_MASK_URL = `url("data:image/svg+xml,${encodeURIComponent(
|
|
|
2469
2533
|
)}")`;
|
|
2470
2534
|
|
|
2471
2535
|
// ../../apps/web/src/components/brand.tsx
|
|
2472
|
-
import { jsx as
|
|
2536
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
2473
2537
|
var INVERT_IN_DARK = "dark:invert";
|
|
2474
2538
|
function Wordmark({
|
|
2475
2539
|
width = 132,
|
|
2476
2540
|
className = ""
|
|
2477
2541
|
}) {
|
|
2478
|
-
return /* @__PURE__ */
|
|
2542
|
+
return /* @__PURE__ */ jsx10(
|
|
2479
2543
|
"svg",
|
|
2480
2544
|
{
|
|
2481
2545
|
viewBox: WORDMARK.viewBox,
|
|
@@ -2484,7 +2548,7 @@ function Wordmark({
|
|
|
2484
2548
|
role: "img",
|
|
2485
2549
|
"aria-label": "Median",
|
|
2486
2550
|
className: `${INVERT_IN_DARK} ${className}`,
|
|
2487
|
-
children: WORDMARK.paths.map((d2) => /* @__PURE__ */
|
|
2551
|
+
children: WORDMARK.paths.map((d2) => /* @__PURE__ */ jsx10("path", { d: d2, fill: BRAND_INK }, d2))
|
|
2488
2552
|
}
|
|
2489
2553
|
);
|
|
2490
2554
|
}
|
|
@@ -2492,7 +2556,7 @@ function Logo({
|
|
|
2492
2556
|
size = 104,
|
|
2493
2557
|
className = ""
|
|
2494
2558
|
}) {
|
|
2495
|
-
return /* @__PURE__ */
|
|
2559
|
+
return /* @__PURE__ */ jsx10(
|
|
2496
2560
|
"svg",
|
|
2497
2561
|
{
|
|
2498
2562
|
viewBox: LOGO.viewBox,
|
|
@@ -2500,13 +2564,41 @@ function Logo({
|
|
|
2500
2564
|
height: size,
|
|
2501
2565
|
"aria-hidden": true,
|
|
2502
2566
|
className: `${INVERT_IN_DARK} ${className}`,
|
|
2503
|
-
children: LOGO.paths.map((d2) => /* @__PURE__ */
|
|
2567
|
+
children: LOGO.paths.map((d2) => /* @__PURE__ */ jsx10("path", { d: d2, fill: BRAND_INK }, d2))
|
|
2568
|
+
}
|
|
2569
|
+
);
|
|
2570
|
+
}
|
|
2571
|
+
function ShimmerLogo({
|
|
2572
|
+
label,
|
|
2573
|
+
className
|
|
2574
|
+
}) {
|
|
2575
|
+
return /* @__PURE__ */ jsx10(
|
|
2576
|
+
"span",
|
|
2577
|
+
{
|
|
2578
|
+
role: "status",
|
|
2579
|
+
"aria-label": label,
|
|
2580
|
+
style: {
|
|
2581
|
+
maskImage: LOGO_MASK_URL,
|
|
2582
|
+
maskSize: "contain",
|
|
2583
|
+
maskRepeat: "no-repeat",
|
|
2584
|
+
maskPosition: "center",
|
|
2585
|
+
WebkitMaskImage: LOGO_MASK_URL,
|
|
2586
|
+
WebkitMaskSize: "contain",
|
|
2587
|
+
WebkitMaskRepeat: "no-repeat",
|
|
2588
|
+
WebkitMaskPosition: "center",
|
|
2589
|
+
backgroundImage: "linear-gradient(115deg, var(--muted) 34%, var(--muted-foreground) 50%, var(--muted) 66%)",
|
|
2590
|
+
backgroundSize: "300% 100%"
|
|
2591
|
+
},
|
|
2592
|
+
className: cn(
|
|
2593
|
+
"size-12 animate-shimmer motion-reduce:animate-none motion-reduce:bg-muted",
|
|
2594
|
+
className
|
|
2595
|
+
)
|
|
2504
2596
|
}
|
|
2505
2597
|
);
|
|
2506
2598
|
}
|
|
2507
2599
|
|
|
2508
2600
|
// ../../apps/web/src/components/support-widget/widget-badge.tsx
|
|
2509
|
-
import { jsx as
|
|
2601
|
+
import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
2510
2602
|
var MEDIAN_URL = "https://median.sh";
|
|
2511
2603
|
function PoweredByMedian({ className }) {
|
|
2512
2604
|
return /* @__PURE__ */ jsxs4(
|
|
@@ -2523,15 +2615,15 @@ function PoweredByMedian({ className }) {
|
|
|
2523
2615
|
),
|
|
2524
2616
|
children: [
|
|
2525
2617
|
"Powered by",
|
|
2526
|
-
/* @__PURE__ */
|
|
2527
|
-
/* @__PURE__ */
|
|
2618
|
+
/* @__PURE__ */ jsx11(Logo, { size: 12, className: "opacity-80" }),
|
|
2619
|
+
/* @__PURE__ */ jsx11(Wordmark, { width: 40, className: "opacity-80" })
|
|
2528
2620
|
]
|
|
2529
2621
|
}
|
|
2530
2622
|
);
|
|
2531
2623
|
}
|
|
2532
2624
|
|
|
2533
2625
|
// ../../apps/web/src/components/support-widget/widget-composer.tsx
|
|
2534
|
-
import { jsx as
|
|
2626
|
+
import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
2535
2627
|
var EMAIL_PATTERN = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
|
|
2536
2628
|
var SWAP = "transition-[opacity,translate] duration-300 ease-out motion-reduce:transition-none";
|
|
2537
2629
|
var RISE = "transition-transform duration-450 ease-spring motion-reduce:transition-none";
|
|
@@ -2610,7 +2702,7 @@ function WidgetComposer({
|
|
|
2610
2702
|
className: "flex shrink-0 flex-col gap-1.5 px-3 pt-1 pb-3",
|
|
2611
2703
|
...isAsking ? {} : target.targetProps,
|
|
2612
2704
|
children: [
|
|
2613
|
-
!isAsking && attachments.drafts.length > 0 && /* @__PURE__ */
|
|
2705
|
+
!isAsking && attachments.drafts.length > 0 && /* @__PURE__ */ jsx12("ul", { className: "flex flex-wrap gap-1.5 px-1", children: attachments.drafts.map((item) => /* @__PURE__ */ jsx12("li", { className: "min-w-0", children: /* @__PURE__ */ jsx12(
|
|
2614
2706
|
AttachmentDraftChip,
|
|
2615
2707
|
{
|
|
2616
2708
|
draft: item,
|
|
@@ -2618,13 +2710,13 @@ function WidgetComposer({
|
|
|
2618
2710
|
}
|
|
2619
2711
|
) }, item.id)) }),
|
|
2620
2712
|
/* @__PURE__ */ jsxs5("div", { className: "relative", children: [
|
|
2621
|
-
/* @__PURE__ */
|
|
2713
|
+
/* @__PURE__ */ jsx12(
|
|
2622
2714
|
"div",
|
|
2623
2715
|
{
|
|
2624
2716
|
"aria-hidden": !showTab,
|
|
2625
2717
|
inert: !showTab,
|
|
2626
2718
|
className: "pointer-events-none absolute inset-x-0 bottom-full z-0 -mb-0.5 flex items-end justify-center overflow-hidden pt-2",
|
|
2627
|
-
children: /* @__PURE__ */
|
|
2719
|
+
children: /* @__PURE__ */ jsx12(
|
|
2628
2720
|
"div",
|
|
2629
2721
|
{
|
|
2630
2722
|
className: cn(
|
|
@@ -2644,8 +2736,8 @@ function WidgetComposer({
|
|
|
2644
2736
|
isSaved && "-translate-y-full"
|
|
2645
2737
|
),
|
|
2646
2738
|
children: [
|
|
2647
|
-
/* @__PURE__ */
|
|
2648
|
-
/* @__PURE__ */
|
|
2739
|
+
/* @__PURE__ */ jsx12(EnvelopeSimple, { "aria-hidden": true, className: "size-4 shrink-0" }),
|
|
2740
|
+
/* @__PURE__ */ jsx12("span", { className: "truncate", children: "Enter your email" })
|
|
2649
2741
|
]
|
|
2650
2742
|
}
|
|
2651
2743
|
),
|
|
@@ -2659,8 +2751,8 @@ function WidgetComposer({
|
|
|
2659
2751
|
!isSaved && "translate-y-full"
|
|
2660
2752
|
),
|
|
2661
2753
|
children: [
|
|
2662
|
-
/* @__PURE__ */
|
|
2663
|
-
/* @__PURE__ */
|
|
2754
|
+
/* @__PURE__ */ jsx12(Check, { "aria-hidden": true, className: "size-4 shrink-0" }),
|
|
2755
|
+
/* @__PURE__ */ jsx12("span", { className: "truncate", children: "Saved" })
|
|
2664
2756
|
]
|
|
2665
2757
|
}
|
|
2666
2758
|
)
|
|
@@ -2691,7 +2783,7 @@ function WidgetComposer({
|
|
|
2691
2783
|
isAsking && "-translate-y-1 opacity-0 pointer-events-none"
|
|
2692
2784
|
),
|
|
2693
2785
|
children: [
|
|
2694
|
-
/* @__PURE__ */
|
|
2786
|
+
/* @__PURE__ */ jsx12(
|
|
2695
2787
|
"input",
|
|
2696
2788
|
{
|
|
2697
2789
|
ref: fileInputRef,
|
|
@@ -2702,7 +2794,7 @@ function WidgetComposer({
|
|
|
2702
2794
|
className: "sr-only"
|
|
2703
2795
|
}
|
|
2704
2796
|
),
|
|
2705
|
-
/* @__PURE__ */
|
|
2797
|
+
/* @__PURE__ */ jsx12(
|
|
2706
2798
|
WidgetButton,
|
|
2707
2799
|
{
|
|
2708
2800
|
type: "button",
|
|
@@ -2711,10 +2803,10 @@ function WidgetComposer({
|
|
|
2711
2803
|
onClick: () => fileInputRef.current?.click(),
|
|
2712
2804
|
"aria-label": "Add an attachment",
|
|
2713
2805
|
className: "rounded-full text-muted-foreground hover:rotate-90 motion-reduce:hover:rotate-0",
|
|
2714
|
-
children: /* @__PURE__ */
|
|
2806
|
+
children: /* @__PURE__ */ jsx12(Plus, {})
|
|
2715
2807
|
}
|
|
2716
2808
|
),
|
|
2717
|
-
/* @__PURE__ */
|
|
2809
|
+
/* @__PURE__ */ jsx12(
|
|
2718
2810
|
Textarea,
|
|
2719
2811
|
{
|
|
2720
2812
|
ref: draftRef,
|
|
@@ -2730,7 +2822,7 @@ function WidgetComposer({
|
|
|
2730
2822
|
className: "max-h-32 min-h-8 flex-1 px-1 py-1.5 max-sm:text-[16px]"
|
|
2731
2823
|
}
|
|
2732
2824
|
),
|
|
2733
|
-
/* @__PURE__ */
|
|
2825
|
+
/* @__PURE__ */ jsx12(
|
|
2734
2826
|
WidgetButton,
|
|
2735
2827
|
{
|
|
2736
2828
|
type: "button",
|
|
@@ -2742,7 +2834,7 @@ function WidgetComposer({
|
|
|
2742
2834
|
"rounded-full",
|
|
2743
2835
|
canSend ? "scale-100 opacity-100" : "scale-90 opacity-40 motion-reduce:scale-100"
|
|
2744
2836
|
),
|
|
2745
|
-
children: /* @__PURE__ */
|
|
2837
|
+
children: /* @__PURE__ */ jsx12(ArrowUp, {})
|
|
2746
2838
|
}
|
|
2747
2839
|
)
|
|
2748
2840
|
]
|
|
@@ -2759,7 +2851,7 @@ function WidgetComposer({
|
|
|
2759
2851
|
!isAsking && "pointer-events-none translate-y-1 opacity-0"
|
|
2760
2852
|
),
|
|
2761
2853
|
children: [
|
|
2762
|
-
/* @__PURE__ */
|
|
2854
|
+
/* @__PURE__ */ jsx12(
|
|
2763
2855
|
"input",
|
|
2764
2856
|
{
|
|
2765
2857
|
type: "email",
|
|
@@ -2778,7 +2870,7 @@ function WidgetComposer({
|
|
|
2778
2870
|
className: "h-8 min-w-0 flex-1 px-1 outline-none placeholder:text-muted-foreground max-sm:text-[16px]"
|
|
2779
2871
|
}
|
|
2780
2872
|
),
|
|
2781
|
-
/* @__PURE__ */
|
|
2873
|
+
/* @__PURE__ */ jsx12(
|
|
2782
2874
|
WidgetButton,
|
|
2783
2875
|
{
|
|
2784
2876
|
type: "button",
|
|
@@ -2790,7 +2882,7 @@ function WidgetComposer({
|
|
|
2790
2882
|
"rounded-full",
|
|
2791
2883
|
isValid ? "scale-100 opacity-100" : "scale-90 opacity-40 motion-reduce:scale-100"
|
|
2792
2884
|
),
|
|
2793
|
-
children: /* @__PURE__ */
|
|
2885
|
+
children: /* @__PURE__ */ jsx12(ArrowUp, {})
|
|
2794
2886
|
}
|
|
2795
2887
|
)
|
|
2796
2888
|
]
|
|
@@ -2800,23 +2892,50 @@ function WidgetComposer({
|
|
|
2800
2892
|
}
|
|
2801
2893
|
)
|
|
2802
2894
|
] }),
|
|
2803
|
-
showBadge && /* @__PURE__ */
|
|
2895
|
+
showBadge && /* @__PURE__ */ jsx12(PoweredByMedian, {})
|
|
2804
2896
|
]
|
|
2805
2897
|
}
|
|
2806
2898
|
)
|
|
2807
2899
|
);
|
|
2808
2900
|
}
|
|
2809
2901
|
|
|
2902
|
+
// ../../apps/web/src/components/support-widget/widget-destination.tsx
|
|
2903
|
+
import { jsx as jsx13, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
2904
|
+
function WidgetDestination({
|
|
2905
|
+
destination,
|
|
2906
|
+
onFollow
|
|
2907
|
+
}) {
|
|
2908
|
+
return /* @__PURE__ */ jsxs6(
|
|
2909
|
+
WidgetButton,
|
|
2910
|
+
{
|
|
2911
|
+
type: "button",
|
|
2912
|
+
onClick: () => onFollow(destination),
|
|
2913
|
+
"aria-label": `Take me to ${destination.path}`,
|
|
2914
|
+
className: "group/go h-auto max-w-full justify-start gap-2 rounded-full px-3.5 py-2 text-left",
|
|
2915
|
+
children: [
|
|
2916
|
+
/* @__PURE__ */ jsx13("span", { className: "min-w-0 flex-1 truncate", children: "Take me there" }),
|
|
2917
|
+
/* @__PURE__ */ jsx13(
|
|
2918
|
+
ArrowRight,
|
|
2919
|
+
{
|
|
2920
|
+
"aria-hidden": true,
|
|
2921
|
+
className: "size-3.5 transition-transform group-hover/go:translate-x-0.5"
|
|
2922
|
+
}
|
|
2923
|
+
)
|
|
2924
|
+
]
|
|
2925
|
+
}
|
|
2926
|
+
);
|
|
2927
|
+
}
|
|
2928
|
+
|
|
2810
2929
|
// ../../apps/web/src/components/avatar.tsx
|
|
2811
2930
|
import { useState as useState6 } from "react";
|
|
2812
2931
|
|
|
2813
2932
|
// ../../apps/web/src/components/initial-badge.tsx
|
|
2814
|
-
import { jsx as
|
|
2933
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
2815
2934
|
function InitialBadge({
|
|
2816
2935
|
value,
|
|
2817
2936
|
className
|
|
2818
2937
|
}) {
|
|
2819
|
-
return /* @__PURE__ */
|
|
2938
|
+
return /* @__PURE__ */ jsx14(
|
|
2820
2939
|
"span",
|
|
2821
2940
|
{
|
|
2822
2941
|
"aria-hidden": true,
|
|
@@ -2831,7 +2950,7 @@ function InitialBadge({
|
|
|
2831
2950
|
}
|
|
2832
2951
|
|
|
2833
2952
|
// ../../apps/web/src/components/avatar.tsx
|
|
2834
|
-
import { jsx as
|
|
2953
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
2835
2954
|
function Avatar({
|
|
2836
2955
|
src,
|
|
2837
2956
|
name,
|
|
@@ -2843,7 +2962,7 @@ function Avatar({
|
|
|
2843
2962
|
const hasFailed = failedSrc !== null && failedSrc === src;
|
|
2844
2963
|
const shape2 = "size-4.5 shrink-0 rounded-full";
|
|
2845
2964
|
if (!src || hasFailed) {
|
|
2846
|
-
return /* @__PURE__ */
|
|
2965
|
+
return /* @__PURE__ */ jsx15(
|
|
2847
2966
|
InitialBadge,
|
|
2848
2967
|
{
|
|
2849
2968
|
value: name,
|
|
@@ -2851,7 +2970,7 @@ function Avatar({
|
|
|
2851
2970
|
}
|
|
2852
2971
|
);
|
|
2853
2972
|
}
|
|
2854
|
-
return /* @__PURE__ */
|
|
2973
|
+
return /* @__PURE__ */ jsx15(
|
|
2855
2974
|
next_image_shim_default,
|
|
2856
2975
|
{
|
|
2857
2976
|
src,
|
|
@@ -2867,7 +2986,7 @@ function Avatar({
|
|
|
2867
2986
|
}
|
|
2868
2987
|
|
|
2869
2988
|
// ../../apps/web/src/components/support-widget/widget-avatar.tsx
|
|
2870
|
-
import { jsx as
|
|
2989
|
+
import { jsx as jsx16 } from "react/jsx-runtime";
|
|
2871
2990
|
function WidgetAvatar({
|
|
2872
2991
|
agent,
|
|
2873
2992
|
label,
|
|
@@ -2875,7 +2994,7 @@ function WidgetAvatar({
|
|
|
2875
2994
|
}) {
|
|
2876
2995
|
const shape2 = "size-7 shrink-0 rounded-lg";
|
|
2877
2996
|
if (agent.kind === "ai" && !agent.avatarUrl) {
|
|
2878
|
-
return /* @__PURE__ */
|
|
2997
|
+
return /* @__PURE__ */ jsx16(
|
|
2879
2998
|
"span",
|
|
2880
2999
|
{
|
|
2881
3000
|
role: "img",
|
|
@@ -2885,17 +3004,17 @@ function WidgetAvatar({
|
|
|
2885
3004
|
shape2,
|
|
2886
3005
|
className
|
|
2887
3006
|
),
|
|
2888
|
-
children: /* @__PURE__ */
|
|
3007
|
+
children: /* @__PURE__ */ jsx16(Sparkle, { className: "size-[55%]" })
|
|
2889
3008
|
}
|
|
2890
3009
|
);
|
|
2891
3010
|
}
|
|
2892
|
-
return /* @__PURE__ */
|
|
3011
|
+
return /* @__PURE__ */ jsx16(
|
|
2893
3012
|
"span",
|
|
2894
3013
|
{
|
|
2895
3014
|
role: "img",
|
|
2896
3015
|
"aria-label": label ?? agent.name,
|
|
2897
3016
|
className: cn("inline-flex", shape2, className),
|
|
2898
|
-
children: /* @__PURE__ */
|
|
3017
|
+
children: /* @__PURE__ */ jsx16(
|
|
2899
3018
|
Avatar,
|
|
2900
3019
|
{
|
|
2901
3020
|
src: agent.avatarUrl,
|
|
@@ -2911,11 +3030,11 @@ function WidgetAvatarStack({
|
|
|
2911
3030
|
className
|
|
2912
3031
|
}) {
|
|
2913
3032
|
if (team.length === 0) return null;
|
|
2914
|
-
return /* @__PURE__ */
|
|
3033
|
+
return /* @__PURE__ */ jsx16("div", { className: cn("flex items-center gap-1", className), children: team.map((agent) => /* @__PURE__ */ jsx16(WidgetAvatar, { agent, className: "size-8" }, agent.id)) });
|
|
2915
3034
|
}
|
|
2916
3035
|
|
|
2917
3036
|
// ../../apps/web/src/components/support-widget/widget-empty.tsx
|
|
2918
|
-
import { jsx as
|
|
3037
|
+
import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
2919
3038
|
var STARTERS = [
|
|
2920
3039
|
{
|
|
2921
3040
|
label: "Ask a question",
|
|
@@ -2941,19 +3060,19 @@ function WidgetEmpty({
|
|
|
2941
3060
|
isWaiting = false
|
|
2942
3061
|
}) {
|
|
2943
3062
|
const agent = team.find((member) => member.kind === "ai") ?? team[0];
|
|
2944
|
-
return /* @__PURE__ */
|
|
2945
|
-
agent && /* @__PURE__ */
|
|
3063
|
+
return /* @__PURE__ */ jsxs7("div", { className: "flex min-h-0 flex-1 flex-col items-center justify-center gap-4 px-5 pb-2 text-center", children: [
|
|
3064
|
+
agent && /* @__PURE__ */ jsx17(
|
|
2946
3065
|
WidgetAvatar,
|
|
2947
3066
|
{
|
|
2948
3067
|
agent,
|
|
2949
3068
|
className: "size-14 animate-in rounded-2xl duration-500 ease-out fade-in-0 zoom-in-95 motion-reduce:animate-none"
|
|
2950
3069
|
}
|
|
2951
3070
|
),
|
|
2952
|
-
/* @__PURE__ */
|
|
2953
|
-
agent && /* @__PURE__ */
|
|
2954
|
-
/* @__PURE__ */
|
|
3071
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex max-w-64 animate-in flex-col gap-1 delay-150 duration-500 ease-out fade-in-0 slide-in-from-bottom-2 fill-mode-backwards motion-reduce:animate-none", children: [
|
|
3072
|
+
agent && /* @__PURE__ */ jsx17("p", { className: "text-base font-semibold tracking-tight", children: agent.name }),
|
|
3073
|
+
/* @__PURE__ */ jsx17("p", { className: "text-sm text-balance text-muted-foreground", children: orgName ? `Ask me anything about ${orgName}.` : "Ask me anything." })
|
|
2955
3074
|
] }),
|
|
2956
|
-
onPick && /* @__PURE__ */
|
|
3075
|
+
onPick && /* @__PURE__ */ jsx17("div", { className: "flex w-full flex-col gap-1.5 pt-1", children: STARTERS.map((starter, index) => /* @__PURE__ */ jsxs7(
|
|
2957
3076
|
WidgetButton,
|
|
2958
3077
|
{
|
|
2959
3078
|
type: "button",
|
|
@@ -2967,9 +3086,9 @@ function WidgetEmpty({
|
|
|
2967
3086
|
"hover:border-foreground/15 hover:shadow-sm"
|
|
2968
3087
|
),
|
|
2969
3088
|
children: [
|
|
2970
|
-
/* @__PURE__ */
|
|
2971
|
-
/* @__PURE__ */
|
|
2972
|
-
/* @__PURE__ */
|
|
3089
|
+
/* @__PURE__ */ jsx17(starter.glyph, { className: "size-4 text-muted-foreground" }),
|
|
3090
|
+
/* @__PURE__ */ jsx17("span", { className: "min-w-0 flex-1 truncate", children: starter.label }),
|
|
3091
|
+
/* @__PURE__ */ jsx17(
|
|
2973
3092
|
CaretRight,
|
|
2974
3093
|
{
|
|
2975
3094
|
"aria-hidden": true,
|
|
@@ -2984,7 +3103,7 @@ function WidgetEmpty({
|
|
|
2984
3103
|
}
|
|
2985
3104
|
|
|
2986
3105
|
// ../../apps/web/src/components/support-widget/widget-header.tsx
|
|
2987
|
-
import { jsx as
|
|
3106
|
+
import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
2988
3107
|
function WidgetHeader({
|
|
2989
3108
|
presence,
|
|
2990
3109
|
onClose,
|
|
@@ -2993,7 +3112,7 @@ function WidgetHeader({
|
|
|
2993
3112
|
grabHandlers,
|
|
2994
3113
|
isMoving = false
|
|
2995
3114
|
}) {
|
|
2996
|
-
return /* @__PURE__ */
|
|
3115
|
+
return /* @__PURE__ */ jsxs8(
|
|
2997
3116
|
"header",
|
|
2998
3117
|
{
|
|
2999
3118
|
...grabHandlers,
|
|
@@ -3008,14 +3127,14 @@ function WidgetHeader({
|
|
|
3008
3127
|
]
|
|
3009
3128
|
),
|
|
3010
3129
|
children: [
|
|
3011
|
-
/* @__PURE__ */
|
|
3012
|
-
/* @__PURE__ */
|
|
3013
|
-
/* @__PURE__ */
|
|
3130
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex min-w-0 flex-1 flex-col pt-0.5", children: [
|
|
3131
|
+
/* @__PURE__ */ jsx18("h2", { className: "truncate text-base font-semibold tracking-tight", children: presence.name }),
|
|
3132
|
+
/* @__PURE__ */ jsx18("p", { className: "truncate text-sm text-muted-foreground", children: presence.status })
|
|
3014
3133
|
] }),
|
|
3015
|
-
/* @__PURE__ */
|
|
3016
|
-
/* @__PURE__ */
|
|
3017
|
-
/* @__PURE__ */
|
|
3018
|
-
onToggleExpanded && /* @__PURE__ */
|
|
3134
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex shrink-0 items-center gap-2", children: [
|
|
3135
|
+
/* @__PURE__ */ jsx18(WidgetAvatarStack, { team: presence.team }),
|
|
3136
|
+
/* @__PURE__ */ jsxs8("div", { className: "flex items-center gap-0.5", children: [
|
|
3137
|
+
onToggleExpanded && /* @__PURE__ */ jsx18(
|
|
3019
3138
|
WidgetButton,
|
|
3020
3139
|
{
|
|
3021
3140
|
variant: "ghost",
|
|
@@ -3024,10 +3143,10 @@ function WidgetHeader({
|
|
|
3024
3143
|
"aria-pressed": isExpanded,
|
|
3025
3144
|
"aria-label": isExpanded ? "Shrink the panel" : "Expand the panel",
|
|
3026
3145
|
className: "text-muted-foreground",
|
|
3027
|
-
children: isExpanded ? /* @__PURE__ */
|
|
3146
|
+
children: isExpanded ? /* @__PURE__ */ jsx18(ArrowsIn, {}) : /* @__PURE__ */ jsx18(ArrowsOut, {})
|
|
3028
3147
|
}
|
|
3029
3148
|
),
|
|
3030
|
-
onClose && /* @__PURE__ */
|
|
3149
|
+
onClose && /* @__PURE__ */ jsx18(
|
|
3031
3150
|
WidgetButton,
|
|
3032
3151
|
{
|
|
3033
3152
|
variant: "ghost",
|
|
@@ -3035,7 +3154,7 @@ function WidgetHeader({
|
|
|
3035
3154
|
onClick: onClose,
|
|
3036
3155
|
"aria-label": "Close support",
|
|
3037
3156
|
className: "-mr-1 text-muted-foreground",
|
|
3038
|
-
children: /* @__PURE__ */
|
|
3157
|
+
children: /* @__PURE__ */ jsx18(X, {})
|
|
3039
3158
|
}
|
|
3040
3159
|
)
|
|
3041
3160
|
] })
|
|
@@ -3046,45 +3165,26 @@ function WidgetHeader({
|
|
|
3046
3165
|
}
|
|
3047
3166
|
|
|
3048
3167
|
// ../../apps/web/src/components/support-widget/widget-loading.tsx
|
|
3049
|
-
import { jsx as
|
|
3168
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
3050
3169
|
function WidgetLoading() {
|
|
3051
|
-
return /* @__PURE__ */
|
|
3052
|
-
"span",
|
|
3053
|
-
{
|
|
3054
|
-
role: "status",
|
|
3055
|
-
"aria-label": "Loading the conversation",
|
|
3056
|
-
style: {
|
|
3057
|
-
maskImage: LOGO_MASK_URL,
|
|
3058
|
-
maskSize: "contain",
|
|
3059
|
-
maskRepeat: "no-repeat",
|
|
3060
|
-
maskPosition: "center",
|
|
3061
|
-
WebkitMaskImage: LOGO_MASK_URL,
|
|
3062
|
-
WebkitMaskSize: "contain",
|
|
3063
|
-
WebkitMaskRepeat: "no-repeat",
|
|
3064
|
-
WebkitMaskPosition: "center",
|
|
3065
|
-
backgroundImage: "linear-gradient(115deg, var(--muted) 34%, var(--muted-foreground) 50%, var(--muted) 66%)",
|
|
3066
|
-
backgroundSize: "300% 100%"
|
|
3067
|
-
},
|
|
3068
|
-
className: "size-12 animate-shimmer motion-reduce:animate-none motion-reduce:bg-muted"
|
|
3069
|
-
}
|
|
3070
|
-
) });
|
|
3170
|
+
return /* @__PURE__ */ jsx19("div", { className: "grid min-h-0 flex-1 place-items-center p-6", children: /* @__PURE__ */ jsx19(ShimmerLogo, { label: "Loading the conversation" }) });
|
|
3071
3171
|
}
|
|
3072
3172
|
|
|
3073
3173
|
// ../../apps/web/src/components/support-widget/widget-locked.tsx
|
|
3074
|
-
import { jsx as
|
|
3174
|
+
import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
3075
3175
|
function WidgetLocked({
|
|
3076
3176
|
orgName,
|
|
3077
3177
|
onSignIn,
|
|
3078
3178
|
showBadge = true
|
|
3079
3179
|
}) {
|
|
3080
|
-
return /* @__PURE__ */
|
|
3081
|
-
/* @__PURE__ */
|
|
3082
|
-
/* @__PURE__ */
|
|
3083
|
-
/* @__PURE__ */
|
|
3084
|
-
/* @__PURE__ */
|
|
3085
|
-
/* @__PURE__ */
|
|
3180
|
+
return /* @__PURE__ */ jsxs9("div", { className: "flex min-h-0 flex-1 flex-col", children: [
|
|
3181
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex min-h-0 flex-1 flex-col items-center justify-center gap-4 px-6 text-center", children: [
|
|
3182
|
+
/* @__PURE__ */ jsx20("span", { className: "grid size-14 animate-in place-items-center rounded-2xl bg-muted duration-500 ease-out fade-in-0 zoom-in-95 motion-reduce:animate-none", children: /* @__PURE__ */ jsx20(LockSimple, { className: "size-6 text-muted-foreground" }) }),
|
|
3183
|
+
/* @__PURE__ */ jsxs9("div", { className: "flex max-w-64 animate-in flex-col gap-1 delay-150 duration-500 ease-out fade-in-0 slide-in-from-bottom-2 fill-mode-backwards motion-reduce:animate-none", children: [
|
|
3184
|
+
/* @__PURE__ */ jsx20("p", { className: "text-base font-semibold tracking-tight", children: "Sign in to chat" }),
|
|
3185
|
+
/* @__PURE__ */ jsx20("p", { className: "text-sm text-balance text-muted-foreground", children: orgName ? `Ask ${orgName} anything once you are signed in.` : "Ask us anything once you are signed in." })
|
|
3086
3186
|
] }),
|
|
3087
|
-
onSignIn && /* @__PURE__ */
|
|
3187
|
+
onSignIn && /* @__PURE__ */ jsx20(
|
|
3088
3188
|
WidgetButton,
|
|
3089
3189
|
{
|
|
3090
3190
|
onClick: onSignIn,
|
|
@@ -3093,12 +3193,12 @@ function WidgetLocked({
|
|
|
3093
3193
|
}
|
|
3094
3194
|
)
|
|
3095
3195
|
] }),
|
|
3096
|
-
showBadge && /* @__PURE__ */
|
|
3196
|
+
showBadge && /* @__PURE__ */ jsx20(PoweredByMedian, { className: "shrink-0 px-3 pb-3" })
|
|
3097
3197
|
] });
|
|
3098
3198
|
}
|
|
3099
3199
|
|
|
3100
3200
|
// ../../apps/web/src/components/ui/badge.tsx
|
|
3101
|
-
import { jsx as
|
|
3201
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
3102
3202
|
var badgeVariants = cva(
|
|
3103
3203
|
"inline-flex w-fit shrink-0 items-center gap-1 rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-3",
|
|
3104
3204
|
{
|
|
@@ -3122,7 +3222,7 @@ function Badge({
|
|
|
3122
3222
|
...props
|
|
3123
3223
|
}) {
|
|
3124
3224
|
const Comp = asChild ? dist_exports.Root : "span";
|
|
3125
|
-
return /* @__PURE__ */
|
|
3225
|
+
return /* @__PURE__ */ jsx21(
|
|
3126
3226
|
Comp,
|
|
3127
3227
|
{
|
|
3128
3228
|
"data-slot": "badge",
|
|
@@ -3135,15 +3235,15 @@ function Badge({
|
|
|
3135
3235
|
|
|
3136
3236
|
// ../../apps/web/src/components/support-widget/widget-attachments.tsx
|
|
3137
3237
|
import { useState as useState7 } from "react";
|
|
3138
|
-
import { Fragment as
|
|
3238
|
+
import { Fragment as Fragment25, jsx as jsx22, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
3139
3239
|
var SURFACE = "rounded-xl border border-foreground/10 bg-card/70";
|
|
3140
3240
|
function OpenAttachment({
|
|
3141
3241
|
attachment,
|
|
3142
3242
|
className,
|
|
3143
3243
|
children
|
|
3144
3244
|
}) {
|
|
3145
|
-
if (!attachment.url) return /* @__PURE__ */
|
|
3146
|
-
return /* @__PURE__ */
|
|
3245
|
+
if (!attachment.url) return /* @__PURE__ */ jsx22(Fragment25, { children });
|
|
3246
|
+
return /* @__PURE__ */ jsx22(
|
|
3147
3247
|
"a",
|
|
3148
3248
|
{
|
|
3149
3249
|
href: attachment.url,
|
|
@@ -3165,7 +3265,7 @@ function MediaTile({
|
|
|
3165
3265
|
}) {
|
|
3166
3266
|
const [hasFailed, setHasFailed] = useState7(false);
|
|
3167
3267
|
if (!attachment.previewUrl || hasFailed) {
|
|
3168
|
-
return /* @__PURE__ */
|
|
3268
|
+
return /* @__PURE__ */ jsxs10(
|
|
3169
3269
|
"div",
|
|
3170
3270
|
{
|
|
3171
3271
|
className: cn(
|
|
@@ -3174,14 +3274,14 @@ function MediaTile({
|
|
|
3174
3274
|
className
|
|
3175
3275
|
),
|
|
3176
3276
|
children: [
|
|
3177
|
-
/* @__PURE__ */
|
|
3178
|
-
/* @__PURE__ */
|
|
3277
|
+
/* @__PURE__ */ jsx22(ImageSquare, { className: "size-5 text-muted-foreground" }),
|
|
3278
|
+
/* @__PURE__ */ jsx22("p", { className: "text-xs text-muted-foreground", children: "Preview unavailable" })
|
|
3179
3279
|
]
|
|
3180
3280
|
}
|
|
3181
3281
|
);
|
|
3182
3282
|
}
|
|
3183
|
-
return /* @__PURE__ */
|
|
3184
|
-
/* @__PURE__ */
|
|
3283
|
+
return /* @__PURE__ */ jsxs10("figure", { className: cn(SURFACE, "relative overflow-hidden", className), children: [
|
|
3284
|
+
/* @__PURE__ */ jsx22(
|
|
3185
3285
|
"img",
|
|
3186
3286
|
{
|
|
3187
3287
|
src: attachment.previewUrl,
|
|
@@ -3193,22 +3293,22 @@ function MediaTile({
|
|
|
3193
3293
|
className: "size-full object-cover"
|
|
3194
3294
|
}
|
|
3195
3295
|
),
|
|
3196
|
-
attachment.kind === "video" && /* @__PURE__ */
|
|
3296
|
+
attachment.kind === "video" && /* @__PURE__ */ jsx22(
|
|
3197
3297
|
"span",
|
|
3198
3298
|
{
|
|
3199
3299
|
"aria-hidden": true,
|
|
3200
3300
|
className: "absolute inset-0 grid place-items-center bg-foreground/15",
|
|
3201
|
-
children: /* @__PURE__ */
|
|
3301
|
+
children: /* @__PURE__ */ jsx22("span", { className: "grid size-8 place-items-center rounded-full bg-background/85 shadow-sm", children: /* @__PURE__ */ jsx22(Play, { className: "size-3.5 translate-x-px" }) })
|
|
3202
3302
|
}
|
|
3203
3303
|
)
|
|
3204
3304
|
] });
|
|
3205
3305
|
}
|
|
3206
3306
|
function FileRow({ attachment }) {
|
|
3207
|
-
return /* @__PURE__ */
|
|
3208
|
-
/* @__PURE__ */
|
|
3209
|
-
/* @__PURE__ */
|
|
3210
|
-
/* @__PURE__ */
|
|
3211
|
-
/* @__PURE__ */
|
|
3307
|
+
return /* @__PURE__ */ jsx22(OpenAttachment, { attachment, children: /* @__PURE__ */ jsxs10("div", { className: cn(SURFACE, "flex items-center gap-2 px-2 py-1.5"), children: [
|
|
3308
|
+
/* @__PURE__ */ jsx22(File, { className: "size-4 shrink-0 text-muted-foreground" }),
|
|
3309
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex min-w-0 flex-1 flex-col text-left", children: [
|
|
3310
|
+
/* @__PURE__ */ jsx22("p", { className: "truncate text-xs font-medium", children: attachment.name }),
|
|
3311
|
+
/* @__PURE__ */ jsx22("p", { className: "truncate text-xs text-muted-foreground", children: attachment.size })
|
|
3212
3312
|
] })
|
|
3213
3313
|
] }) });
|
|
3214
3314
|
}
|
|
@@ -3217,23 +3317,23 @@ function WidgetAttachments({
|
|
|
3217
3317
|
}) {
|
|
3218
3318
|
const media = attachments.filter((one) => one.kind !== "file");
|
|
3219
3319
|
const files = attachments.filter((one) => one.kind === "file");
|
|
3220
|
-
return /* @__PURE__ */
|
|
3221
|
-
media.length > 0 && /* @__PURE__ */
|
|
3320
|
+
return /* @__PURE__ */ jsxs10("div", { className: "flex w-56 max-w-full flex-col gap-1.5", children: [
|
|
3321
|
+
media.length > 0 && /* @__PURE__ */ jsx22("div", { className: cn("grid gap-1.5", media.length > 1 && "grid-cols-2"), children: media.map((attachment) => /* @__PURE__ */ jsx22(
|
|
3222
3322
|
OpenAttachment,
|
|
3223
3323
|
{
|
|
3224
3324
|
attachment,
|
|
3225
3325
|
className: media.length > 1 ? "h-20" : "h-32",
|
|
3226
|
-
children: /* @__PURE__ */
|
|
3326
|
+
children: /* @__PURE__ */ jsx22(MediaTile, { attachment, className: "size-full" })
|
|
3227
3327
|
},
|
|
3228
3328
|
attachment.id
|
|
3229
3329
|
)) }),
|
|
3230
|
-
files.map((attachment) => /* @__PURE__ */
|
|
3330
|
+
files.map((attachment) => /* @__PURE__ */ jsx22(FileRow, { attachment }, attachment.id))
|
|
3231
3331
|
] });
|
|
3232
3332
|
}
|
|
3233
3333
|
|
|
3234
3334
|
// ../../apps/web/src/components/ui/morph-bubble.tsx
|
|
3235
3335
|
import { useLayoutEffect as useLayoutEffect3, useRef as useRef8 } from "react";
|
|
3236
|
-
import { jsx as
|
|
3336
|
+
import { jsx as jsx23 } from "react/jsx-runtime";
|
|
3237
3337
|
var MORPH_MS = 260;
|
|
3238
3338
|
var MORPH_EASING = "cubic-bezier(0.22, 1, 0.36, 1)";
|
|
3239
3339
|
var CONTENT_FADE_MS = 140;
|
|
@@ -3302,17 +3402,17 @@ function MorphBubble({
|
|
|
3302
3402
|
reveal.cancel();
|
|
3303
3403
|
});
|
|
3304
3404
|
}, [morphKey]);
|
|
3305
|
-
return /* @__PURE__ */
|
|
3405
|
+
return /* @__PURE__ */ jsx23("div", { ref: box, className: cn("overflow-hidden", className), children: /* @__PURE__ */ jsx23("div", { ref: content, className: contentClassName, children }) });
|
|
3306
3406
|
}
|
|
3307
3407
|
|
|
3308
3408
|
// ../../apps/web/src/components/support-widget/widget-bubble.tsx
|
|
3309
|
-
import { jsx as
|
|
3409
|
+
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
3310
3410
|
function WidgetBubble({
|
|
3311
3411
|
morphKey,
|
|
3312
3412
|
className,
|
|
3313
3413
|
children
|
|
3314
3414
|
}) {
|
|
3315
|
-
return /* @__PURE__ */
|
|
3415
|
+
return /* @__PURE__ */ jsx24(
|
|
3316
3416
|
MorphBubble,
|
|
3317
3417
|
{
|
|
3318
3418
|
morphKey,
|
|
@@ -3325,24 +3425,24 @@ function WidgetBubble({
|
|
|
3325
3425
|
|
|
3326
3426
|
// ../../apps/web/src/components/support-widget/widget-message-body.tsx
|
|
3327
3427
|
import { Suspense } from "react";
|
|
3328
|
-
import { jsx as
|
|
3428
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
3329
3429
|
function WidgetMessageBody({
|
|
3330
3430
|
body,
|
|
3331
3431
|
sender
|
|
3332
3432
|
}) {
|
|
3333
3433
|
const isReady = useMarkdownReady();
|
|
3334
|
-
const plain = /* @__PURE__ */
|
|
3434
|
+
const plain = /* @__PURE__ */ jsx25("p", { className: "break-words whitespace-pre-line", children: body });
|
|
3335
3435
|
if (sender === "visitor" || !isReady) return plain;
|
|
3336
|
-
return /* @__PURE__ */
|
|
3436
|
+
return /* @__PURE__ */ jsx25(Suspense, { fallback: plain, children: /* @__PURE__ */ jsx25(MessageMarkdown, { body }) });
|
|
3337
3437
|
}
|
|
3338
3438
|
|
|
3339
3439
|
// ../../apps/web/src/components/support-widget/widget-typing.tsx
|
|
3340
|
-
import { jsx as
|
|
3440
|
+
import { jsx as jsx26, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
3341
3441
|
var DOTS = [0, 160, 320];
|
|
3342
3442
|
function WidgetTyping({ label }) {
|
|
3343
|
-
return /* @__PURE__ */
|
|
3344
|
-
/* @__PURE__ */
|
|
3345
|
-
DOTS.map((delay) => /* @__PURE__ */
|
|
3443
|
+
return /* @__PURE__ */ jsxs11("span", { className: "flex items-center gap-1 py-1.5", children: [
|
|
3444
|
+
/* @__PURE__ */ jsx26("span", { className: "sr-only", children: label }),
|
|
3445
|
+
DOTS.map((delay) => /* @__PURE__ */ jsx26(
|
|
3346
3446
|
"span",
|
|
3347
3447
|
{
|
|
3348
3448
|
"aria-hidden": true,
|
|
@@ -3355,71 +3455,79 @@ function WidgetTyping({ label }) {
|
|
|
3355
3455
|
}
|
|
3356
3456
|
|
|
3357
3457
|
// ../../apps/web/src/components/support-widget/widget-message.tsx
|
|
3358
|
-
import { Fragment as
|
|
3458
|
+
import { Fragment as Fragment26, jsx as jsx27, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
3359
3459
|
var BUBBLE = "max-w-[80%] rounded-2xl px-3.5 py-2 text-sm";
|
|
3360
3460
|
var VISITOR_BUBBLE = "bg-[color-mix(in_oklch,var(--muted),var(--foreground)_12%)]";
|
|
3361
3461
|
var ARRIVES = "animate-in fade-in-0 slide-in-from-bottom-1 duration-200 ease-out motion-reduce:animate-none";
|
|
3362
3462
|
function WidgetDivider({ message }) {
|
|
3363
3463
|
const label = message.startsConversation ? "New conversation" : message.dayLabel;
|
|
3364
3464
|
if (!label) return null;
|
|
3365
|
-
return /* @__PURE__ */
|
|
3366
|
-
/* @__PURE__ */
|
|
3367
|
-
/* @__PURE__ */
|
|
3368
|
-
/* @__PURE__ */
|
|
3465
|
+
return /* @__PURE__ */ jsxs12("div", { className: "flex items-center gap-3 py-1", children: [
|
|
3466
|
+
/* @__PURE__ */ jsx27("span", { className: "h-px flex-1 bg-border" }),
|
|
3467
|
+
/* @__PURE__ */ jsx27("span", { className: "text-xs text-muted-foreground", children: label }),
|
|
3468
|
+
/* @__PURE__ */ jsx27("span", { className: "h-px flex-1 bg-border" })
|
|
3369
3469
|
] });
|
|
3370
3470
|
}
|
|
3371
3471
|
function WidgetMessage({
|
|
3372
3472
|
message,
|
|
3373
|
-
group = LONE_MESSAGE
|
|
3473
|
+
group = LONE_MESSAGE,
|
|
3474
|
+
onFollow
|
|
3374
3475
|
}) {
|
|
3375
|
-
return message.sender === "visitor" ? /* @__PURE__ */
|
|
3476
|
+
return message.sender === "visitor" ? /* @__PURE__ */ jsx27(VisitorMessage, { message }) : /* @__PURE__ */ jsx27(AgentMessage, { message, group, onFollow });
|
|
3376
3477
|
}
|
|
3377
3478
|
function BubbleContent({ message }) {
|
|
3378
3479
|
const hasAttachments = (message.attachments?.length ?? 0) > 0;
|
|
3379
3480
|
if (message.pending) {
|
|
3380
|
-
return /* @__PURE__ */
|
|
3481
|
+
return /* @__PURE__ */ jsx27(
|
|
3381
3482
|
WidgetTyping,
|
|
3382
3483
|
{
|
|
3383
3484
|
label: `${message.agent?.name ?? "Support"} is writing a reply`
|
|
3384
3485
|
}
|
|
3385
3486
|
);
|
|
3386
3487
|
}
|
|
3387
|
-
return /* @__PURE__ */
|
|
3388
|
-
hasAttachments && /* @__PURE__ */
|
|
3389
|
-
message.body && /* @__PURE__ */
|
|
3488
|
+
return /* @__PURE__ */ jsxs12(Fragment26, { children: [
|
|
3489
|
+
hasAttachments && /* @__PURE__ */ jsx27(WidgetAttachments, { attachments: message.attachments ?? [] }),
|
|
3490
|
+
message.body && /* @__PURE__ */ jsx27(WidgetMessageBody, { body: message.body, sender: message.sender })
|
|
3390
3491
|
] });
|
|
3391
3492
|
}
|
|
3392
3493
|
function VisitorMessage({ message }) {
|
|
3393
|
-
return /* @__PURE__ */
|
|
3494
|
+
return /* @__PURE__ */ jsx27("div", { className: cn("flex justify-end", ARRIVES), children: /* @__PURE__ */ jsx27(WidgetBubble, { morphKey: "settled", className: cn(BUBBLE, VISITOR_BUBBLE), children: /* @__PURE__ */ jsx27(BubbleContent, { message }) }) });
|
|
3394
3495
|
}
|
|
3395
3496
|
function AgentMessage({
|
|
3396
3497
|
message,
|
|
3397
|
-
group
|
|
3498
|
+
group,
|
|
3499
|
+
onFollow
|
|
3398
3500
|
}) {
|
|
3399
3501
|
const { agent } = message;
|
|
3502
|
+
const destination = message.navigateTo === void 0 ? null : {
|
|
3503
|
+
key: message.id,
|
|
3504
|
+
path: message.navigateTo,
|
|
3505
|
+
highlight: message.highlight ?? null
|
|
3506
|
+
};
|
|
3400
3507
|
return (
|
|
3401
3508
|
// One line saying who and when, then the thing they said. The face used to
|
|
3402
3509
|
// sit in a gutter beside the bubble with the name above it and the time
|
|
3403
3510
|
// below, which spread four small things across three rows and pushed every
|
|
3404
3511
|
// bubble in off the edge. All of it is one line now, and the bubble gets
|
|
3405
3512
|
// the full width back.
|
|
3406
|
-
/* @__PURE__ */
|
|
3407
|
-
group.isFirst && /* @__PURE__ */
|
|
3408
|
-
agent && /* @__PURE__ */
|
|
3409
|
-
/* @__PURE__ */
|
|
3410
|
-
/* @__PURE__ */
|
|
3411
|
-
agent.kind === "ai" && /* @__PURE__ */
|
|
3513
|
+
/* @__PURE__ */ jsxs12("div", { className: cn("flex flex-col items-start gap-1", ARRIVES), children: [
|
|
3514
|
+
group.isFirst && /* @__PURE__ */ jsxs12("div", { className: "flex max-w-full items-center gap-1.5 px-0.5", children: [
|
|
3515
|
+
agent && /* @__PURE__ */ jsxs12(Fragment26, { children: [
|
|
3516
|
+
/* @__PURE__ */ jsx27(WidgetAvatar, { agent, className: "size-5 rounded-md" }),
|
|
3517
|
+
/* @__PURE__ */ jsx27("span", { className: "truncate text-xs font-medium", children: agent.name }),
|
|
3518
|
+
agent.kind === "ai" && /* @__PURE__ */ jsx27(Badge, { variant: "muted", className: "shrink-0 rounded-md px-1", children: "AI" })
|
|
3412
3519
|
] }),
|
|
3413
|
-
!message.pending && /* @__PURE__ */
|
|
3520
|
+
!message.pending && /* @__PURE__ */ jsx27("span", { className: "shrink-0 text-xs text-muted-foreground tabular-nums", children: message.time })
|
|
3414
3521
|
] }),
|
|
3415
|
-
/* @__PURE__ */
|
|
3522
|
+
/* @__PURE__ */ jsx27(
|
|
3416
3523
|
WidgetBubble,
|
|
3417
3524
|
{
|
|
3418
3525
|
morphKey: message.pending ? "pending" : `${message.body.length}:${message.attachments?.length ?? 0}`,
|
|
3419
3526
|
className: cn(BUBBLE, "bg-muted"),
|
|
3420
|
-
children: /* @__PURE__ */
|
|
3527
|
+
children: /* @__PURE__ */ jsx27(BubbleContent, { message })
|
|
3421
3528
|
}
|
|
3422
|
-
)
|
|
3529
|
+
),
|
|
3530
|
+
destination !== null && onFollow !== void 0 && /* @__PURE__ */ jsx27("div", { className: "pt-1", children: /* @__PURE__ */ jsx27(WidgetDestination, { destination, onFollow }) })
|
|
3423
3531
|
] })
|
|
3424
3532
|
);
|
|
3425
3533
|
}
|
|
@@ -3428,7 +3536,7 @@ function AgentMessage({
|
|
|
3428
3536
|
import { useEffect as useEffect7, useRef as useRef9, useState as useState8 } from "react";
|
|
3429
3537
|
|
|
3430
3538
|
// ../../apps/web/src/components/ui/collapse.tsx
|
|
3431
|
-
import { jsx as
|
|
3539
|
+
import { jsx as jsx28 } from "react/jsx-runtime";
|
|
3432
3540
|
var COLLAPSE_MS = 200;
|
|
3433
3541
|
function Collapse({
|
|
3434
3542
|
isOpen,
|
|
@@ -3436,7 +3544,7 @@ function Collapse({
|
|
|
3436
3544
|
children,
|
|
3437
3545
|
className
|
|
3438
3546
|
}) {
|
|
3439
|
-
return /* @__PURE__ */
|
|
3547
|
+
return /* @__PURE__ */ jsx28(
|
|
3440
3548
|
"div",
|
|
3441
3549
|
{
|
|
3442
3550
|
id,
|
|
@@ -3446,13 +3554,13 @@ function Collapse({
|
|
|
3446
3554
|
isOpen ? "grid-rows-[1fr] opacity-100" : "grid-rows-[0fr] opacity-0",
|
|
3447
3555
|
className
|
|
3448
3556
|
),
|
|
3449
|
-
children: /* @__PURE__ */
|
|
3557
|
+
children: /* @__PURE__ */ jsx28("div", { className: "overflow-hidden", children })
|
|
3450
3558
|
}
|
|
3451
3559
|
);
|
|
3452
3560
|
}
|
|
3453
3561
|
|
|
3454
3562
|
// ../../apps/web/src/components/support-widget/widget-rating.tsx
|
|
3455
|
-
import { jsx as
|
|
3563
|
+
import { jsx as jsx29, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
3456
3564
|
var STARS = Array.from({ length: RATING_MAX_STARS }, (_, index) => index + 1);
|
|
3457
3565
|
var THANKS_MS = 1400;
|
|
3458
3566
|
var STAR_STAGGER_MS = 40;
|
|
@@ -3506,11 +3614,11 @@ function WidgetRating({ rating }) {
|
|
|
3506
3614
|
setIsDone(true);
|
|
3507
3615
|
later(THANKS_MS, leave);
|
|
3508
3616
|
}
|
|
3509
|
-
return /* @__PURE__ */
|
|
3510
|
-
/* @__PURE__ */
|
|
3511
|
-
/* @__PURE__ */
|
|
3512
|
-
/* @__PURE__ */
|
|
3513
|
-
/* @__PURE__ */
|
|
3617
|
+
return /* @__PURE__ */ jsx29(Collapse, { isOpen, className: "shrink-0", children: /* @__PURE__ */ jsxs13("div", { className: "mx-3 mb-2 rounded-xl border bg-muted/40 px-3 dark:bg-muted/20", children: [
|
|
3618
|
+
/* @__PURE__ */ jsx29(Collapse, { isOpen: !isDone, children: /* @__PURE__ */ jsxs13("div", { className: "py-2.5", children: [
|
|
3619
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-start justify-between gap-2", children: [
|
|
3620
|
+
/* @__PURE__ */ jsx29("p", { className: "text-sm font-medium", children: picked === null ? "How did we do?" : "Thanks. Tell us more?" }),
|
|
3621
|
+
/* @__PURE__ */ jsx29(
|
|
3514
3622
|
WidgetButton,
|
|
3515
3623
|
{
|
|
3516
3624
|
type: "button",
|
|
@@ -3523,14 +3631,14 @@ function WidgetRating({ rating }) {
|
|
|
3523
3631
|
}
|
|
3524
3632
|
)
|
|
3525
3633
|
] }),
|
|
3526
|
-
/* @__PURE__ */
|
|
3634
|
+
/* @__PURE__ */ jsx29(
|
|
3527
3635
|
"div",
|
|
3528
3636
|
{
|
|
3529
3637
|
role: "radiogroup",
|
|
3530
3638
|
"aria-label": "How did we do?",
|
|
3531
3639
|
className: "flex items-center justify-center gap-1 pt-1.5",
|
|
3532
3640
|
onMouseLeave: () => setHovered(null),
|
|
3533
|
-
children: STARS.map((value) => /* @__PURE__ */
|
|
3641
|
+
children: STARS.map((value) => /* @__PURE__ */ jsx29(
|
|
3534
3642
|
"button",
|
|
3535
3643
|
{
|
|
3536
3644
|
type: "button",
|
|
@@ -3548,7 +3656,7 @@ function WidgetRating({ rating }) {
|
|
|
3548
3656
|
"active:scale-95 disabled:pointer-events-none",
|
|
3549
3657
|
"motion-reduce:transition-none"
|
|
3550
3658
|
),
|
|
3551
|
-
children: /* @__PURE__ */
|
|
3659
|
+
children: /* @__PURE__ */ jsx29(
|
|
3552
3660
|
Star,
|
|
3553
3661
|
{
|
|
3554
3662
|
style: {
|
|
@@ -3565,8 +3673,8 @@ function WidgetRating({ rating }) {
|
|
|
3565
3673
|
))
|
|
3566
3674
|
}
|
|
3567
3675
|
),
|
|
3568
|
-
/* @__PURE__ */
|
|
3569
|
-
/* @__PURE__ */
|
|
3676
|
+
/* @__PURE__ */ jsx29(Collapse, { isOpen: picked !== null, children: /* @__PURE__ */ jsxs13("div", { className: "flex flex-col gap-2 pt-2", children: [
|
|
3677
|
+
/* @__PURE__ */ jsx29(
|
|
3570
3678
|
Textarea,
|
|
3571
3679
|
{
|
|
3572
3680
|
value: feedback,
|
|
@@ -3582,7 +3690,7 @@ function WidgetRating({ rating }) {
|
|
|
3582
3690
|
)
|
|
3583
3691
|
}
|
|
3584
3692
|
),
|
|
3585
|
-
/* @__PURE__ */
|
|
3693
|
+
/* @__PURE__ */ jsx29(
|
|
3586
3694
|
WidgetButton,
|
|
3587
3695
|
{
|
|
3588
3696
|
type: "button",
|
|
@@ -3594,23 +3702,23 @@ function WidgetRating({ rating }) {
|
|
|
3594
3702
|
}
|
|
3595
3703
|
)
|
|
3596
3704
|
] }) }),
|
|
3597
|
-
/* @__PURE__ */
|
|
3705
|
+
/* @__PURE__ */ jsx29(Collapse, { isOpen: error !== null, children: /* @__PURE__ */ jsx29("p", { className: "pt-1.5 text-center text-xs text-destructive", children: error }) })
|
|
3598
3706
|
] }) }),
|
|
3599
|
-
/* @__PURE__ */
|
|
3707
|
+
/* @__PURE__ */ jsx29(Collapse, { isOpen: isDone, children: /* @__PURE__ */ jsx29("p", { className: "py-3 text-center text-sm font-medium", children: "Thanks for the feedback." }) })
|
|
3600
3708
|
] }) });
|
|
3601
3709
|
}
|
|
3602
3710
|
|
|
3603
3711
|
// ../../apps/web/src/components/support-widget/widget-status.tsx
|
|
3604
|
-
import { jsx as
|
|
3712
|
+
import { jsx as jsx30, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
3605
3713
|
function WidgetAwaitingHuman() {
|
|
3606
|
-
return /* @__PURE__ */
|
|
3607
|
-
/* @__PURE__ */
|
|
3714
|
+
return /* @__PURE__ */ jsxs14("p", { className: "flex animate-in items-center justify-center gap-1.5 px-4 pb-1 text-xs text-muted-foreground duration-200 ease-out fade-in-0 slide-in-from-bottom-1 motion-reduce:animate-none", children: [
|
|
3715
|
+
/* @__PURE__ */ jsx30(UserCircle, { "aria-hidden": true, className: "size-3.5" }),
|
|
3608
3716
|
"Waiting for a teammate"
|
|
3609
3717
|
] });
|
|
3610
3718
|
}
|
|
3611
3719
|
|
|
3612
3720
|
// ../../apps/web/src/components/support-widget/support-widget.tsx
|
|
3613
|
-
import { jsx as
|
|
3721
|
+
import { jsx as jsx31, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
3614
3722
|
function joinsPreviousTurn(message, previous) {
|
|
3615
3723
|
return !message.dayLabel && !message.startsConversation && message.sender === previous.sender && message.agent?.id === previous.agent?.id && withinRun(previous.sentAt, message.sentAt);
|
|
3616
3724
|
}
|
|
@@ -3630,6 +3738,8 @@ function SupportWidget({
|
|
|
3630
3738
|
isSending = false,
|
|
3631
3739
|
awaitingHuman = false,
|
|
3632
3740
|
rating,
|
|
3741
|
+
offer = null,
|
|
3742
|
+
onFollow,
|
|
3633
3743
|
notice,
|
|
3634
3744
|
showBadge = true,
|
|
3635
3745
|
grabHandlers,
|
|
@@ -3637,7 +3747,7 @@ function SupportWidget({
|
|
|
3637
3747
|
className
|
|
3638
3748
|
}) {
|
|
3639
3749
|
const stack = useStackShift(messages.length);
|
|
3640
|
-
return /* @__PURE__ */
|
|
3750
|
+
return /* @__PURE__ */ jsxs15(
|
|
3641
3751
|
"section",
|
|
3642
3752
|
{
|
|
3643
3753
|
"aria-label": `${presence.name} support`,
|
|
@@ -3649,7 +3759,7 @@ function SupportWidget({
|
|
|
3649
3759
|
className
|
|
3650
3760
|
),
|
|
3651
3761
|
children: [
|
|
3652
|
-
/* @__PURE__ */
|
|
3762
|
+
/* @__PURE__ */ jsx31(
|
|
3653
3763
|
WidgetHeader,
|
|
3654
3764
|
{
|
|
3655
3765
|
presence,
|
|
@@ -3660,10 +3770,10 @@ function SupportWidget({
|
|
|
3660
3770
|
isMoving
|
|
3661
3771
|
}
|
|
3662
3772
|
),
|
|
3663
|
-
isLoading ? /* @__PURE__ */
|
|
3773
|
+
isLoading ? /* @__PURE__ */ jsx31(WidgetLoading, {}) : isLocked ? (
|
|
3664
3774
|
/* After the loading rather than before it: the line names the host,
|
|
3665
3775
|
so it waits for the name the same as everything else does. */
|
|
3666
|
-
/* @__PURE__ */
|
|
3776
|
+
/* @__PURE__ */ jsx31(
|
|
3667
3777
|
WidgetLocked,
|
|
3668
3778
|
{
|
|
3669
3779
|
orgName: presence.name,
|
|
@@ -3671,7 +3781,7 @@ function SupportWidget({
|
|
|
3671
3781
|
showBadge
|
|
3672
3782
|
}
|
|
3673
3783
|
)
|
|
3674
|
-
) : /* @__PURE__ */
|
|
3784
|
+
) : /* @__PURE__ */ jsx31(
|
|
3675
3785
|
Conversation,
|
|
3676
3786
|
{
|
|
3677
3787
|
presence,
|
|
@@ -3683,6 +3793,8 @@ function SupportWidget({
|
|
|
3683
3793
|
isSending,
|
|
3684
3794
|
awaitingHuman,
|
|
3685
3795
|
rating,
|
|
3796
|
+
offer,
|
|
3797
|
+
onFollow,
|
|
3686
3798
|
notice,
|
|
3687
3799
|
showBadge,
|
|
3688
3800
|
stackRef: stack
|
|
@@ -3702,13 +3814,15 @@ function Conversation({
|
|
|
3702
3814
|
isSending = false,
|
|
3703
3815
|
awaitingHuman = false,
|
|
3704
3816
|
rating,
|
|
3817
|
+
offer = null,
|
|
3818
|
+
onFollow,
|
|
3705
3819
|
notice,
|
|
3706
3820
|
showBadge,
|
|
3707
3821
|
stackRef
|
|
3708
3822
|
}) {
|
|
3709
3823
|
const groups = groupMessages(messages, joinsPreviousTurn);
|
|
3710
|
-
return /* @__PURE__ */
|
|
3711
|
-
messages.length === 0 ? /* @__PURE__ */
|
|
3824
|
+
return /* @__PURE__ */ jsxs15("div", { className: "flex min-h-0 flex-1 flex-col animate-in fade-in-0 duration-500 ease-out motion-reduce:animate-none", children: [
|
|
3825
|
+
messages.length === 0 ? /* @__PURE__ */ jsx31(
|
|
3712
3826
|
WidgetEmpty,
|
|
3713
3827
|
{
|
|
3714
3828
|
team: presence.team,
|
|
@@ -3727,8 +3841,8 @@ function Conversation({
|
|
|
3727
3841
|
so a scroller left alone slides the newest message under the
|
|
3728
3842
|
composer and has to catch up afterwards. Following it is what the
|
|
3729
3843
|
scroller stops easing for, so this tracks frame by frame. */
|
|
3730
|
-
/* @__PURE__ */
|
|
3731
|
-
/* @__PURE__ */
|
|
3844
|
+
/* @__PURE__ */ jsx31(MessageScrollerProvider, { children: /* @__PURE__ */ jsxs15(MessageScroller, { className: "h-auto min-h-0 flex-1", children: [
|
|
3845
|
+
/* @__PURE__ */ jsx31(
|
|
3732
3846
|
MessageScrollerViewport,
|
|
3733
3847
|
{
|
|
3734
3848
|
role: "log",
|
|
@@ -3736,12 +3850,12 @@ function Conversation({
|
|
|
3736
3850
|
"aria-relevant": "additions",
|
|
3737
3851
|
"aria-label": "Conversation",
|
|
3738
3852
|
className: "px-3 py-2",
|
|
3739
|
-
children: /* @__PURE__ */
|
|
3853
|
+
children: /* @__PURE__ */ jsx31(
|
|
3740
3854
|
MessageScrollerContent,
|
|
3741
3855
|
{
|
|
3742
3856
|
ref: stackRef,
|
|
3743
3857
|
className: "justify-end gap-0",
|
|
3744
|
-
children: messages.map((message, index) => /* @__PURE__ */
|
|
3858
|
+
children: messages.map((message, index) => /* @__PURE__ */ jsxs15(
|
|
3745
3859
|
MessageScrollerItem,
|
|
3746
3860
|
{
|
|
3747
3861
|
messageId: message.id,
|
|
@@ -3750,8 +3864,15 @@ function Conversation({
|
|
|
3750
3864
|
groups[index].isFirst ? "pt-4" : "pt-1"
|
|
3751
3865
|
),
|
|
3752
3866
|
children: [
|
|
3753
|
-
/* @__PURE__ */
|
|
3754
|
-
/* @__PURE__ */
|
|
3867
|
+
/* @__PURE__ */ jsx31(WidgetDivider, { message }),
|
|
3868
|
+
/* @__PURE__ */ jsx31(
|
|
3869
|
+
WidgetMessage,
|
|
3870
|
+
{
|
|
3871
|
+
message,
|
|
3872
|
+
group: groups[index],
|
|
3873
|
+
onFollow
|
|
3874
|
+
}
|
|
3875
|
+
)
|
|
3755
3876
|
]
|
|
3756
3877
|
},
|
|
3757
3878
|
message.id
|
|
@@ -3760,13 +3881,14 @@ function Conversation({
|
|
|
3760
3881
|
)
|
|
3761
3882
|
}
|
|
3762
3883
|
),
|
|
3763
|
-
/* @__PURE__ */
|
|
3884
|
+
/* @__PURE__ */ jsx31(MessageScrollerButton, {})
|
|
3764
3885
|
] }) })
|
|
3765
3886
|
),
|
|
3766
|
-
rating && /* @__PURE__ */
|
|
3767
|
-
|
|
3768
|
-
|
|
3769
|
-
/* @__PURE__ */
|
|
3887
|
+
rating && /* @__PURE__ */ jsx31(WidgetRating, { rating }),
|
|
3888
|
+
offer !== null && onFollow !== void 0 && /* @__PURE__ */ jsx31("div", { className: "animate-in px-3 pb-1 duration-200 ease-out fade-in-0 slide-in-from-bottom-1 motion-reduce:animate-none", children: /* @__PURE__ */ jsx31(WidgetDestination, { destination: offer, onFollow }) }),
|
|
3889
|
+
awaitingHuman && /* @__PURE__ */ jsx31(WidgetAwaitingHuman, {}),
|
|
3890
|
+
notice && /* @__PURE__ */ jsx31("p", { className: "animate-in px-4 pb-1 text-center text-xs text-destructive fade-in duration-150", children: notice }),
|
|
3891
|
+
/* @__PURE__ */ jsx31(
|
|
3770
3892
|
WidgetComposer,
|
|
3771
3893
|
{
|
|
3772
3894
|
onSend,
|
|
@@ -4047,10 +4169,33 @@ function clamp2(value, low, high) {
|
|
|
4047
4169
|
return Math.min(Math.max(value, low), Math.max(low, high));
|
|
4048
4170
|
}
|
|
4049
4171
|
|
|
4172
|
+
// ../../apps/web/src/components/support-widget/use-teaser-placement.ts
|
|
4173
|
+
import { useLayoutEffect as useLayoutEffect5, useState as useState10 } from "react";
|
|
4174
|
+
var ROOM_ABOVE_PX = 128;
|
|
4175
|
+
function useTeaserPlacement({
|
|
4176
|
+
buttonRef,
|
|
4177
|
+
enabled: enabled2,
|
|
4178
|
+
isMoving
|
|
4179
|
+
}) {
|
|
4180
|
+
const [placement, setPlacement] = useState10("above");
|
|
4181
|
+
useLayoutEffect5(() => {
|
|
4182
|
+
if (!enabled2 || isMoving) return;
|
|
4183
|
+
const measure = () => {
|
|
4184
|
+
const button = buttonRef.current;
|
|
4185
|
+
if (button === null) return;
|
|
4186
|
+
setPlacement(button.offsetTop < ROOM_ABOVE_PX ? "below" : "above");
|
|
4187
|
+
};
|
|
4188
|
+
measure();
|
|
4189
|
+
window.addEventListener("resize", measure);
|
|
4190
|
+
return () => window.removeEventListener("resize", measure);
|
|
4191
|
+
}, [buttonRef, enabled2, isMoving]);
|
|
4192
|
+
return placement;
|
|
4193
|
+
}
|
|
4194
|
+
|
|
4050
4195
|
// ../../apps/web/src/components/support-widget/use-widget-sheet.ts
|
|
4051
4196
|
import {
|
|
4052
|
-
useLayoutEffect as
|
|
4053
|
-
useState as
|
|
4197
|
+
useLayoutEffect as useLayoutEffect6,
|
|
4198
|
+
useState as useState11,
|
|
4054
4199
|
useSyncExternalStore as useSyncExternalStore4
|
|
4055
4200
|
} from "react";
|
|
4056
4201
|
|
|
@@ -4105,13 +4250,13 @@ function useWidgetSheet({
|
|
|
4105
4250
|
isPhoneNow,
|
|
4106
4251
|
isPhoneOnServer
|
|
4107
4252
|
);
|
|
4108
|
-
const [isFramed, setIsFramed] =
|
|
4109
|
-
|
|
4253
|
+
const [isFramed, setIsFramed] = useState11(false);
|
|
4254
|
+
useLayoutEffect6(() => {
|
|
4110
4255
|
setIsFramed(boxRef.current?.offsetParent != null);
|
|
4111
4256
|
}, [boxRef, isPhone]);
|
|
4112
4257
|
const isSheet = isPhone && !isFramed;
|
|
4113
4258
|
const isUp = isSheet && isOpen;
|
|
4114
|
-
|
|
4259
|
+
useLayoutEffect6(() => {
|
|
4115
4260
|
if (!isUp) return;
|
|
4116
4261
|
const panel = panelRef.current;
|
|
4117
4262
|
const viewport = window.visualViewport;
|
|
@@ -4162,8 +4307,109 @@ function useWidgetSheet({
|
|
|
4162
4307
|
return isSheet;
|
|
4163
4308
|
}
|
|
4164
4309
|
|
|
4310
|
+
// ../../apps/web/src/components/support-widget/widget-teaser.tsx
|
|
4311
|
+
import { useState as useState12 } from "react";
|
|
4312
|
+
|
|
4313
|
+
// ../../apps/web/src/components/support-widget/plain-text.ts
|
|
4314
|
+
function plainTextOf(markdown) {
|
|
4315
|
+
return markdown.replace(/^\s*(?:```|~~~).*$/gm, "").replace(/\[([^\]]*)\]\([^)]*\)/g, "$1").replace(/[*`_~]/g, "").replace(/^\s*#{1,6}\s+/gm, "").replace(/^\s*[-+]\s+/gm, "").replace(/^\s*>\s?/gm, "").replace(/\s+/g, " ").trim();
|
|
4316
|
+
}
|
|
4317
|
+
|
|
4318
|
+
// ../../apps/web/src/components/support-widget/widget-teaser.tsx
|
|
4319
|
+
import { Fragment as Fragment27, jsx as jsx32, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
4320
|
+
var WIDTH = "min(18rem, 100%)";
|
|
4321
|
+
var GAP = "0.5rem";
|
|
4322
|
+
function WidgetTeaser({
|
|
4323
|
+
message,
|
|
4324
|
+
isShown,
|
|
4325
|
+
side,
|
|
4326
|
+
placement,
|
|
4327
|
+
buttonY: buttonY2,
|
|
4328
|
+
buttonSize,
|
|
4329
|
+
onOpen,
|
|
4330
|
+
onDismiss
|
|
4331
|
+
}) {
|
|
4332
|
+
const [held, setHeld] = useState12(message);
|
|
4333
|
+
if (message !== null && message !== held) setHeld(message);
|
|
4334
|
+
const shown = message ?? held;
|
|
4335
|
+
if (shown === null) return null;
|
|
4336
|
+
const agent = shown.agent;
|
|
4337
|
+
const text = plainTextOf(shown.body);
|
|
4338
|
+
return /* @__PURE__ */ jsxs16(
|
|
4339
|
+
"div",
|
|
4340
|
+
{
|
|
4341
|
+
inert: !isShown,
|
|
4342
|
+
role: "status",
|
|
4343
|
+
"aria-live": "polite",
|
|
4344
|
+
style: {
|
|
4345
|
+
width: WIDTH,
|
|
4346
|
+
[side]: 0,
|
|
4347
|
+
...placement === "above" ? { bottom: `calc(100% - ${buttonY2} + ${GAP})` } : { top: `calc(${buttonY2} + ${buttonSize} + ${GAP})` }
|
|
4348
|
+
},
|
|
4349
|
+
className: cn(
|
|
4350
|
+
"absolute",
|
|
4351
|
+
// Grows out of the corner nearest the button, so it reads as coming
|
|
4352
|
+
// from it rather than landing beside it.
|
|
4353
|
+
placement === "above" ? side === "right" ? "origin-bottom-right" : "origin-bottom-left" : side === "right" ? "origin-top-right" : "origin-top-left",
|
|
4354
|
+
"transition-[opacity,translate,scale] motion-reduce:transition-none",
|
|
4355
|
+
isShown ? [
|
|
4356
|
+
"pointer-events-auto opacity-100 duration-300 ease-spring",
|
|
4357
|
+
// The arrival, once. The transition above takes over after.
|
|
4358
|
+
"animate-in fade-in-0 zoom-in-95 duration-300 ease-spring motion-reduce:animate-none",
|
|
4359
|
+
placement === "above" ? "slide-in-from-bottom-2" : "slide-in-from-top-2"
|
|
4360
|
+
] : "pointer-events-none scale-95 opacity-0 duration-150 ease-out-quint"
|
|
4361
|
+
),
|
|
4362
|
+
children: [
|
|
4363
|
+
/* @__PURE__ */ jsxs16(
|
|
4364
|
+
"button",
|
|
4365
|
+
{
|
|
4366
|
+
type: "button",
|
|
4367
|
+
onClick: onOpen,
|
|
4368
|
+
"aria-label": agent ? `Read the reply from ${agent.name}` : "Read the reply",
|
|
4369
|
+
className: cn(
|
|
4370
|
+
// Its own radius scale, like the panel, so the app's token cannot
|
|
4371
|
+
// reshape a card that sits on somebody else's site.
|
|
4372
|
+
"block w-full rounded-xl border bg-card p-3 pr-9 text-left text-card-foreground shadow-lg [--radius:0.625rem]",
|
|
4373
|
+
"transition-[background-color,box-shadow] outline-none",
|
|
4374
|
+
"hover:bg-muted/50 focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
4375
|
+
"cursor-pointer select-none"
|
|
4376
|
+
),
|
|
4377
|
+
children: [
|
|
4378
|
+
/* @__PURE__ */ jsxs16("span", { className: "flex items-center gap-1.5", children: [
|
|
4379
|
+
agent && /* @__PURE__ */ jsxs16(Fragment27, { children: [
|
|
4380
|
+
/* @__PURE__ */ jsx32(WidgetAvatar, { agent, className: "size-5 rounded-md" }),
|
|
4381
|
+
/* @__PURE__ */ jsx32("span", { className: "truncate text-xs font-medium", children: agent.name }),
|
|
4382
|
+
agent.kind === "ai" && /* @__PURE__ */ jsx32(Badge, { variant: "muted", className: "shrink-0 rounded-md px-1", children: "AI" })
|
|
4383
|
+
] }),
|
|
4384
|
+
/* @__PURE__ */ jsx32("span", { className: "ml-auto shrink-0 text-xs text-muted-foreground tabular-nums", children: shown.time })
|
|
4385
|
+
] }),
|
|
4386
|
+
/* @__PURE__ */ jsx32("span", { className: "mt-1 line-clamp-2 block text-sm leading-snug", children: text.length > 0 ? text : "Sent a file" })
|
|
4387
|
+
]
|
|
4388
|
+
}
|
|
4389
|
+
),
|
|
4390
|
+
/* @__PURE__ */ jsx32(
|
|
4391
|
+
"button",
|
|
4392
|
+
{
|
|
4393
|
+
type: "button",
|
|
4394
|
+
onClick: onDismiss,
|
|
4395
|
+
"aria-label": "Dismiss",
|
|
4396
|
+
className: cn(
|
|
4397
|
+
"absolute top-2 right-2 grid size-6 place-items-center rounded-md",
|
|
4398
|
+
"text-muted-foreground transition-colors outline-none",
|
|
4399
|
+
"hover:bg-muted hover:text-foreground focus-visible:ring-3 focus-visible:ring-ring/50",
|
|
4400
|
+
"cursor-pointer"
|
|
4401
|
+
),
|
|
4402
|
+
children: /* @__PURE__ */ jsx32(X, { className: "size-3.5" })
|
|
4403
|
+
}
|
|
4404
|
+
)
|
|
4405
|
+
]
|
|
4406
|
+
},
|
|
4407
|
+
shown.id
|
|
4408
|
+
);
|
|
4409
|
+
}
|
|
4410
|
+
|
|
4165
4411
|
// ../../apps/web/src/components/support-widget/widget-launcher.tsx
|
|
4166
|
-
import { jsx as
|
|
4412
|
+
import { jsx as jsx33, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4167
4413
|
var DEFAULT_WIDTH = "24rem";
|
|
4168
4414
|
var DEFAULT_HEIGHT = "34rem";
|
|
4169
4415
|
var DEFAULT_BUTTON_SIZE = "3.5rem";
|
|
@@ -4206,7 +4452,11 @@ function SupportLauncher({
|
|
|
4206
4452
|
isSending = false,
|
|
4207
4453
|
awaitingHuman = false,
|
|
4208
4454
|
rating,
|
|
4455
|
+
offer = null,
|
|
4456
|
+
onFollow,
|
|
4209
4457
|
unreadCount = 0,
|
|
4458
|
+
teaser = null,
|
|
4459
|
+
onDismissTeaser,
|
|
4210
4460
|
notice,
|
|
4211
4461
|
showBadge = true,
|
|
4212
4462
|
width = DEFAULT_WIDTH,
|
|
@@ -4220,10 +4470,10 @@ function SupportLauncher({
|
|
|
4220
4470
|
onOpenChange,
|
|
4221
4471
|
className
|
|
4222
4472
|
}) {
|
|
4223
|
-
const [uncontrolledOpen, setUncontrolledOpen] =
|
|
4473
|
+
const [uncontrolledOpen, setUncontrolledOpen] = useState13(defaultOpen);
|
|
4224
4474
|
const isOpen = open ?? uncontrolledOpen;
|
|
4225
4475
|
const hasBubble = launcher === "bubble";
|
|
4226
|
-
const [isExpanded, setExpanded] =
|
|
4476
|
+
const [isExpanded, setExpanded] = useState13(false);
|
|
4227
4477
|
const launcherRef = useRef11(null);
|
|
4228
4478
|
const panelRef = useRef11(null);
|
|
4229
4479
|
const boxRef = useRef11(null);
|
|
@@ -4235,6 +4485,12 @@ function SupportLauncher({
|
|
|
4235
4485
|
subject: isOpen ? "panel" : "button"
|
|
4236
4486
|
});
|
|
4237
4487
|
const isSheet = useWidgetSheet({ boxRef, panelRef, isOpen });
|
|
4488
|
+
const hasTeaser = teaser !== null && hasBubble;
|
|
4489
|
+
const teaserPlacement = useTeaserPlacement({
|
|
4490
|
+
buttonRef: launcherRef,
|
|
4491
|
+
enabled: hasTeaser,
|
|
4492
|
+
isMoving: drag.isMoving
|
|
4493
|
+
});
|
|
4238
4494
|
const opener = useRef11(null);
|
|
4239
4495
|
const wasOpen = useRef11(isOpen);
|
|
4240
4496
|
const setOpen = useCallback7(
|
|
@@ -4245,6 +4501,13 @@ function SupportLauncher({
|
|
|
4245
4501
|
[open, onOpenChange]
|
|
4246
4502
|
);
|
|
4247
4503
|
const close = useCallback7(() => setOpen(false), [setOpen]);
|
|
4504
|
+
const follow = useCallback7(
|
|
4505
|
+
(destination) => {
|
|
4506
|
+
onFollow?.(destination);
|
|
4507
|
+
if (isSheet) close();
|
|
4508
|
+
},
|
|
4509
|
+
[onFollow, isSheet, close]
|
|
4510
|
+
);
|
|
4248
4511
|
useEffect10(() => {
|
|
4249
4512
|
if (isOpen) warmMarkdown();
|
|
4250
4513
|
}, [isOpen]);
|
|
@@ -4273,7 +4536,7 @@ function SupportLauncher({
|
|
|
4273
4536
|
// The box is panel sized whether it is open or not, so it never lets a
|
|
4274
4537
|
// click through to the host's page. Only what is actually on screen takes
|
|
4275
4538
|
// pointer events back.
|
|
4276
|
-
/* @__PURE__ */
|
|
4539
|
+
/* @__PURE__ */ jsxs17(
|
|
4277
4540
|
"div",
|
|
4278
4541
|
{
|
|
4279
4542
|
ref: boxRef,
|
|
@@ -4308,7 +4571,7 @@ function SupportLauncher({
|
|
|
4308
4571
|
className
|
|
4309
4572
|
),
|
|
4310
4573
|
children: [
|
|
4311
|
-
!isSheet && /* @__PURE__ */
|
|
4574
|
+
!isSheet && /* @__PURE__ */ jsx33("div", { "aria-hidden": true, className: "absolute inset-0 drop-shadow-xl", children: /* @__PURE__ */ jsx33(
|
|
4312
4575
|
"div",
|
|
4313
4576
|
{
|
|
4314
4577
|
style: shape(isOpen, buttonSize, drag.side, hasBubble),
|
|
@@ -4319,7 +4582,7 @@ function SupportLauncher({
|
|
|
4319
4582
|
)
|
|
4320
4583
|
}
|
|
4321
4584
|
) }),
|
|
4322
|
-
/* @__PURE__ */
|
|
4585
|
+
/* @__PURE__ */ jsx33(
|
|
4323
4586
|
"div",
|
|
4324
4587
|
{
|
|
4325
4588
|
ref: panelRef,
|
|
@@ -4338,7 +4601,7 @@ function SupportLauncher({
|
|
|
4338
4601
|
],
|
|
4339
4602
|
isOpen && "pointer-events-auto"
|
|
4340
4603
|
),
|
|
4341
|
-
children: /* @__PURE__ */
|
|
4604
|
+
children: /* @__PURE__ */ jsx33(
|
|
4342
4605
|
SupportWidget,
|
|
4343
4606
|
{
|
|
4344
4607
|
presence,
|
|
@@ -4356,6 +4619,8 @@ function SupportLauncher({
|
|
|
4356
4619
|
isSending,
|
|
4357
4620
|
awaitingHuman,
|
|
4358
4621
|
rating,
|
|
4622
|
+
offer,
|
|
4623
|
+
onFollow: onFollow === void 0 ? void 0 : follow,
|
|
4359
4624
|
notice,
|
|
4360
4625
|
showBadge,
|
|
4361
4626
|
grabHandlers: isSheet ? void 0 : drag.dragHandlers,
|
|
@@ -4365,7 +4630,7 @@ function SupportLauncher({
|
|
|
4365
4630
|
)
|
|
4366
4631
|
}
|
|
4367
4632
|
),
|
|
4368
|
-
hasBubble && /* @__PURE__ */
|
|
4633
|
+
hasBubble && /* @__PURE__ */ jsxs17(
|
|
4369
4634
|
"button",
|
|
4370
4635
|
{
|
|
4371
4636
|
ref: launcherRef,
|
|
@@ -4433,8 +4698,8 @@ function SupportLauncher({
|
|
|
4433
4698
|
!isOpen && (drag.isMoving ? "cursor-grabbing" : "cursor-pointer active:scale-95")
|
|
4434
4699
|
),
|
|
4435
4700
|
children: [
|
|
4436
|
-
/* @__PURE__ */
|
|
4437
|
-
unreadCount > 0 && /* @__PURE__ */
|
|
4701
|
+
/* @__PURE__ */ jsx33(ChatCircleDots, { className: "size-6" }),
|
|
4702
|
+
unreadCount > 0 && /* @__PURE__ */ jsx33(
|
|
4438
4703
|
"span",
|
|
4439
4704
|
{
|
|
4440
4705
|
"aria-hidden": true,
|
|
@@ -4449,6 +4714,19 @@ function SupportLauncher({
|
|
|
4449
4714
|
)
|
|
4450
4715
|
]
|
|
4451
4716
|
}
|
|
4717
|
+
),
|
|
4718
|
+
hasBubble && /* @__PURE__ */ jsx33(
|
|
4719
|
+
WidgetTeaser,
|
|
4720
|
+
{
|
|
4721
|
+
message: teaser,
|
|
4722
|
+
isShown: hasTeaser && !isOpen,
|
|
4723
|
+
side: drag.side,
|
|
4724
|
+
placement: teaserPlacement,
|
|
4725
|
+
buttonY: buttonY(buttonSize),
|
|
4726
|
+
buttonSize,
|
|
4727
|
+
onOpen: () => setOpen(true),
|
|
4728
|
+
onDismiss: () => onDismissTeaser?.()
|
|
4729
|
+
}
|
|
4452
4730
|
)
|
|
4453
4731
|
]
|
|
4454
4732
|
}
|
|
@@ -4457,9 +4735,9 @@ function SupportLauncher({
|
|
|
4457
4735
|
}
|
|
4458
4736
|
|
|
4459
4737
|
// ../../apps/web/src/components/support-widget/widget-spotlight.tsx
|
|
4460
|
-
import { useEffect as useEffect11, useRef as useRef12, useState as
|
|
4738
|
+
import { useEffect as useEffect11, useRef as useRef12, useState as useState14 } from "react";
|
|
4461
4739
|
import { createPortal } from "react-dom";
|
|
4462
|
-
import { jsx as
|
|
4740
|
+
import { jsx as jsx34, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
4463
4741
|
var FIND_TIMEOUT_MS = 4e3;
|
|
4464
4742
|
var HOLD_MS = 2600;
|
|
4465
4743
|
var FADE_MS = 300;
|
|
@@ -4468,8 +4746,8 @@ function prefersReducedMotion3() {
|
|
|
4468
4746
|
return window.matchMedia("(prefers-reduced-motion: reduce)").matches;
|
|
4469
4747
|
}
|
|
4470
4748
|
function WidgetSpotlight({ selector }) {
|
|
4471
|
-
const [isShown, setIsShown] =
|
|
4472
|
-
const [isLeaving, setIsLeaving] =
|
|
4749
|
+
const [isShown, setIsShown] = useState14(false);
|
|
4750
|
+
const [isLeaving, setIsLeaving] = useState14(false);
|
|
4473
4751
|
const ring = useRef12(null);
|
|
4474
4752
|
useEffect11(() => {
|
|
4475
4753
|
let target = null;
|
|
@@ -4530,7 +4808,7 @@ function WidgetSpotlight({ selector }) {
|
|
|
4530
4808
|
}, [selector]);
|
|
4531
4809
|
if (!isShown || typeof document === "undefined") return null;
|
|
4532
4810
|
return createPortal(
|
|
4533
|
-
/* @__PURE__ */
|
|
4811
|
+
/* @__PURE__ */ jsxs18(
|
|
4534
4812
|
"div",
|
|
4535
4813
|
{
|
|
4536
4814
|
ref: ring,
|
|
@@ -4539,7 +4817,7 @@ function WidgetSpotlight({ selector }) {
|
|
|
4539
4817
|
style: { zIndex: LAYER, top: 0, left: 0 },
|
|
4540
4818
|
className: "pointer-events-none fixed",
|
|
4541
4819
|
children: [
|
|
4542
|
-
/* @__PURE__ */
|
|
4820
|
+
/* @__PURE__ */ jsx34(
|
|
4543
4821
|
"span",
|
|
4544
4822
|
{
|
|
4545
4823
|
className: [
|
|
@@ -4550,7 +4828,7 @@ function WidgetSpotlight({ selector }) {
|
|
|
4550
4828
|
].join(" ")
|
|
4551
4829
|
}
|
|
4552
4830
|
),
|
|
4553
|
-
/* @__PURE__ */
|
|
4831
|
+
/* @__PURE__ */ jsx34(
|
|
4554
4832
|
"span",
|
|
4555
4833
|
{
|
|
4556
4834
|
className: [
|
|
@@ -4567,55 +4845,6 @@ function WidgetSpotlight({ selector }) {
|
|
|
4567
4845
|
);
|
|
4568
4846
|
}
|
|
4569
4847
|
|
|
4570
|
-
// ../../apps/web/src/components/support-widget/widget-toast.tsx
|
|
4571
|
-
import { useEffect as useEffect12, useState as useState13 } from "react";
|
|
4572
|
-
import { createPortal as createPortal2 } from "react-dom";
|
|
4573
|
-
import { jsx as jsx32, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
4574
|
-
var STAY_MS = 5e3;
|
|
4575
|
-
var MOVE_MS = 250;
|
|
4576
|
-
var LAYER2 = 2147483001;
|
|
4577
|
-
function WidgetToast({
|
|
4578
|
-
agent,
|
|
4579
|
-
children
|
|
4580
|
-
}) {
|
|
4581
|
-
const [isShown, setIsShown] = useState13(false);
|
|
4582
|
-
useEffect12(() => {
|
|
4583
|
-
const frame = requestAnimationFrame(() => setIsShown(true));
|
|
4584
|
-
const timer = setTimeout(() => setIsShown(false), STAY_MS);
|
|
4585
|
-
return () => {
|
|
4586
|
-
cancelAnimationFrame(frame);
|
|
4587
|
-
clearTimeout(timer);
|
|
4588
|
-
};
|
|
4589
|
-
}, []);
|
|
4590
|
-
if (typeof document === "undefined") return null;
|
|
4591
|
-
return createPortal2(
|
|
4592
|
-
/* @__PURE__ */ jsxs17(
|
|
4593
|
-
"div",
|
|
4594
|
-
{
|
|
4595
|
-
"data-median-widget": "",
|
|
4596
|
-
style: { zIndex: LAYER2, transitionDuration: `${MOVE_MS}ms` },
|
|
4597
|
-
role: "status",
|
|
4598
|
-
"aria-live": "polite",
|
|
4599
|
-
className: cn(
|
|
4600
|
-
"pointer-events-none fixed bottom-4 left-1/2 flex max-w-[calc(100vw-2rem)] items-center gap-2",
|
|
4601
|
-
"-translate-x-1/2 rounded-full border bg-card py-1.5 pr-4 pl-1.5 shadow-lg",
|
|
4602
|
-
"text-sm text-card-foreground",
|
|
4603
|
-
// `translate`, which is the property `translate-y-*` sets. Under
|
|
4604
|
-
// `transform` the line used to arrive in one frame with only its
|
|
4605
|
-
// opacity easing.
|
|
4606
|
-
"transition-[opacity,translate] ease-out motion-reduce:transition-none",
|
|
4607
|
-
isShown ? "translate-y-0 opacity-100" : "pointer-events-none translate-y-2 opacity-0"
|
|
4608
|
-
),
|
|
4609
|
-
children: [
|
|
4610
|
-
/* @__PURE__ */ jsx32(WidgetAvatar, { agent, className: "size-6 rounded-full" }),
|
|
4611
|
-
/* @__PURE__ */ jsx32("span", { className: "truncate", children })
|
|
4612
|
-
]
|
|
4613
|
-
}
|
|
4614
|
-
),
|
|
4615
|
-
document.body
|
|
4616
|
-
);
|
|
4617
|
-
}
|
|
4618
|
-
|
|
4619
4848
|
// ../../apps/web/src/components/support-widget/sdk/control.ts
|
|
4620
4849
|
import { useSyncExternalStore as useSyncExternalStore9 } from "react";
|
|
4621
4850
|
|
|
@@ -4682,7 +4911,7 @@ function restoreCustomData(entries) {
|
|
|
4682
4911
|
}
|
|
4683
4912
|
|
|
4684
4913
|
// ../../apps/web/src/components/support-widget/sdk/open-store.ts
|
|
4685
|
-
import { useCallback as useCallback8, useEffect as
|
|
4914
|
+
import { useCallback as useCallback8, useEffect as useEffect12, useSyncExternalStore as useSyncExternalStore5 } from "react";
|
|
4686
4915
|
var isDevelopment = typeof process !== "undefined" && process.env.NODE_ENV === "development";
|
|
4687
4916
|
function createOpenStore(component) {
|
|
4688
4917
|
let requested = null;
|
|
@@ -4762,7 +4991,7 @@ function useOpenState(store3, {
|
|
|
4762
4991
|
store3.readServerRequested
|
|
4763
4992
|
);
|
|
4764
4993
|
const isOpen = open ?? asked ?? defaultOpen;
|
|
4765
|
-
|
|
4994
|
+
useEffect12(() => {
|
|
4766
4995
|
store3.settle(isOpen);
|
|
4767
4996
|
}, [store3, isOpen]);
|
|
4768
4997
|
const setOpen = useCallback8(
|
|
@@ -4775,7 +5004,7 @@ function useOpenState(store3, {
|
|
|
4775
5004
|
return [isOpen, setOpen];
|
|
4776
5005
|
}
|
|
4777
5006
|
function useRegister(store3) {
|
|
4778
|
-
|
|
5007
|
+
useEffect12(() => {
|
|
4779
5008
|
if (store3.countMounted() > 1 && isDevelopment) {
|
|
4780
5009
|
console.warn(
|
|
4781
5010
|
`Median: more than one <${store3.component}> is mounted. They share one open state and open together. Mount it once, near the root of your app.`
|
|
@@ -4987,7 +5216,7 @@ function cleanClientDiagnostics(input) {
|
|
|
4987
5216
|
}
|
|
4988
5217
|
|
|
4989
5218
|
// ../../apps/web/src/components/support-widget/sdk/diagnostics.ts
|
|
4990
|
-
import { useCallback as useCallback9, useEffect as
|
|
5219
|
+
import { useCallback as useCallback9, useEffect as useEffect13, useRef as useRef13 } from "react";
|
|
4991
5220
|
function settingsOf(option) {
|
|
4992
5221
|
if (option === void 0 || option === false) return null;
|
|
4993
5222
|
if (option === true) return { errors: true, network: false, console: false };
|
|
@@ -5124,12 +5353,12 @@ function useDiagnostics(option, appState) {
|
|
|
5124
5353
|
const settings = settingsOf(option);
|
|
5125
5354
|
const key = settings === null ? null : JSON.stringify(settings);
|
|
5126
5355
|
const stateRef = useRef13(appState);
|
|
5127
|
-
|
|
5356
|
+
useEffect13(() => {
|
|
5128
5357
|
stateRef.current = appState;
|
|
5129
5358
|
latestState = appState;
|
|
5130
5359
|
});
|
|
5131
5360
|
const sentAt = useRef13(null);
|
|
5132
|
-
|
|
5361
|
+
useEffect13(() => {
|
|
5133
5362
|
if (key === null) return;
|
|
5134
5363
|
return collect(JSON.parse(key));
|
|
5135
5364
|
}, [key]);
|
|
@@ -5143,7 +5372,7 @@ function useDiagnostics(option, appState) {
|
|
|
5143
5372
|
}
|
|
5144
5373
|
|
|
5145
5374
|
// ../../apps/web/src/components/support-widget/sdk/install.ts
|
|
5146
|
-
import { useEffect as
|
|
5375
|
+
import { useEffect as useEffect14 } from "react";
|
|
5147
5376
|
var install = null;
|
|
5148
5377
|
var listeners3 = /* @__PURE__ */ new Set();
|
|
5149
5378
|
function rememberInstall(next) {
|
|
@@ -5165,7 +5394,7 @@ function hasInstall() {
|
|
|
5165
5394
|
return install !== null;
|
|
5166
5395
|
}
|
|
5167
5396
|
function useRememberInstall(apiKey, user) {
|
|
5168
|
-
|
|
5397
|
+
useEffect14(() => {
|
|
5169
5398
|
rememberInstall({ apiKey, ...user ? { user } : {} });
|
|
5170
5399
|
});
|
|
5171
5400
|
}
|
|
@@ -5215,17 +5444,17 @@ function resetSessions() {
|
|
|
5215
5444
|
import { useMutation, useQuery } from "convex/react";
|
|
5216
5445
|
import {
|
|
5217
5446
|
useCallback as useCallback11,
|
|
5218
|
-
useEffect as
|
|
5447
|
+
useEffect as useEffect16,
|
|
5219
5448
|
useMemo as useMemo2,
|
|
5220
|
-
useState as
|
|
5449
|
+
useState as useState16,
|
|
5221
5450
|
useSyncExternalStore as useSyncExternalStore7
|
|
5222
5451
|
} from "react";
|
|
5223
5452
|
|
|
5224
5453
|
// ../../apps/web/src/hooks/use-now.ts
|
|
5225
|
-
import { useEffect as
|
|
5454
|
+
import { useEffect as useEffect15, useState as useState15 } from "react";
|
|
5226
5455
|
function useNow(intervalMs = 3e4) {
|
|
5227
|
-
const [now, setNow] =
|
|
5228
|
-
|
|
5456
|
+
const [now, setNow] = useState15(() => Date.now());
|
|
5457
|
+
useEffect15(() => {
|
|
5229
5458
|
const timer = setInterval(() => setNow(Date.now()), intervalMs);
|
|
5230
5459
|
return () => clearInterval(timer);
|
|
5231
5460
|
}, [intervalMs]);
|
|
@@ -5341,31 +5570,44 @@ function writeSkippedRating(apiKey, conversationId) {
|
|
|
5341
5570
|
}
|
|
5342
5571
|
}
|
|
5343
5572
|
|
|
5344
|
-
// ../../apps/web/src/components/support-widget/sdk/
|
|
5345
|
-
var STORAGE_PREFIX3 = "median:read:";
|
|
5573
|
+
// ../../apps/web/src/components/support-widget/sdk/stamps.ts
|
|
5346
5574
|
var inMemory2 = /* @__PURE__ */ new Map();
|
|
5347
|
-
function
|
|
5575
|
+
function keyOf(name, apiKey) {
|
|
5576
|
+
return `median:${name}:${apiKey}`;
|
|
5577
|
+
}
|
|
5578
|
+
function readStamp(name, apiKey) {
|
|
5348
5579
|
if (typeof window === "undefined") return 0;
|
|
5580
|
+
const key = keyOf(name, apiKey);
|
|
5349
5581
|
try {
|
|
5350
|
-
const stored = window.localStorage.getItem(
|
|
5582
|
+
const stored = window.localStorage.getItem(key);
|
|
5351
5583
|
const at2 = stored === null ? Number.NaN : Number(stored);
|
|
5352
5584
|
return Number.isFinite(at2) ? at2 : 0;
|
|
5353
5585
|
} catch {
|
|
5354
|
-
return inMemory2.get(
|
|
5586
|
+
return inMemory2.get(key) ?? 0;
|
|
5355
5587
|
}
|
|
5356
5588
|
}
|
|
5357
|
-
function
|
|
5589
|
+
function writeStamp(name, apiKey, at2) {
|
|
5358
5590
|
if (typeof window === "undefined") return;
|
|
5359
|
-
|
|
5591
|
+
const key = keyOf(name, apiKey);
|
|
5592
|
+
inMemory2.set(key, at2);
|
|
5360
5593
|
try {
|
|
5361
|
-
window.localStorage.setItem(
|
|
5594
|
+
window.localStorage.setItem(key, String(at2));
|
|
5362
5595
|
} catch {
|
|
5363
5596
|
}
|
|
5364
5597
|
}
|
|
5365
5598
|
|
|
5599
|
+
// ../../apps/web/src/components/support-widget/sdk/read-state.ts
|
|
5600
|
+
var READ = "read";
|
|
5601
|
+
function readLastSeenAt(apiKey) {
|
|
5602
|
+
return readStamp(READ, apiKey);
|
|
5603
|
+
}
|
|
5604
|
+
function writeLastSeenAt(apiKey, at2) {
|
|
5605
|
+
writeStamp(READ, apiKey, at2);
|
|
5606
|
+
}
|
|
5607
|
+
|
|
5366
5608
|
// ../../apps/web/src/components/support-widget/sdk/visitor-email.ts
|
|
5367
5609
|
import { useCallback as useCallback10, useSyncExternalStore as useSyncExternalStore6 } from "react";
|
|
5368
|
-
var
|
|
5610
|
+
var STORAGE_PREFIX3 = "median:email:";
|
|
5369
5611
|
var inMemory3 = /* @__PURE__ */ new Map();
|
|
5370
5612
|
var listeners5 = /* @__PURE__ */ new Set();
|
|
5371
5613
|
function subscribeVisitorEmail(listener) {
|
|
@@ -5377,7 +5619,7 @@ function subscribeVisitorEmail(listener) {
|
|
|
5377
5619
|
function readVisitorEmail(apiKey) {
|
|
5378
5620
|
if (typeof window === "undefined") return null;
|
|
5379
5621
|
try {
|
|
5380
|
-
const stored = window.localStorage.getItem(`${
|
|
5622
|
+
const stored = window.localStorage.getItem(`${STORAGE_PREFIX3}${apiKey}`);
|
|
5381
5623
|
return stored && stored.length > 0 ? stored : null;
|
|
5382
5624
|
} catch {
|
|
5383
5625
|
return inMemory3.get(apiKey) ?? null;
|
|
@@ -5386,7 +5628,7 @@ function readVisitorEmail(apiKey) {
|
|
|
5386
5628
|
function writeVisitorEmail(apiKey, email) {
|
|
5387
5629
|
inMemory3.set(apiKey, email);
|
|
5388
5630
|
try {
|
|
5389
|
-
window.localStorage.setItem(`${
|
|
5631
|
+
window.localStorage.setItem(`${STORAGE_PREFIX3}${apiKey}`, email);
|
|
5390
5632
|
} catch {
|
|
5391
5633
|
}
|
|
5392
5634
|
for (const listener of listeners5) listener();
|
|
@@ -5398,7 +5640,7 @@ function resetVisitorEmails() {
|
|
|
5398
5640
|
const stale = [];
|
|
5399
5641
|
for (let i3 = 0; i3 < window.localStorage.length; i3 += 1) {
|
|
5400
5642
|
const key = window.localStorage.key(i3);
|
|
5401
|
-
if (key !== null && key.startsWith(
|
|
5643
|
+
if (key !== null && key.startsWith(STORAGE_PREFIX3)) stale.push(key);
|
|
5402
5644
|
}
|
|
5403
5645
|
for (const key of stale) window.localStorage.removeItem(key);
|
|
5404
5646
|
} catch {
|
|
@@ -5439,7 +5681,7 @@ var IDENTITY_COMPLAINTS = {
|
|
|
5439
5681
|
unverified: "Median: the user hash passed to <MedianSupport> did not match. Sign the same string you pass as `user.id` with the Median key that produced this widget id. Until it matches, this visitor gets a conversation of their own on every device.",
|
|
5440
5682
|
unconfigured: "Median: a user hash was passed to <MedianSupport>, but its widget id and hash came from different Median keys. Derive both from the same key."
|
|
5441
5683
|
};
|
|
5442
|
-
function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagnostics, appState, requireEmail = true) {
|
|
5684
|
+
function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagnostics, appState, requireEmail = true, messagePreview = true) {
|
|
5443
5685
|
const sessionId = useSyncExternalStore7(
|
|
5444
5686
|
subscribeSession,
|
|
5445
5687
|
useCallback11(() => getOrCreateSessionId(apiKey), [apiKey]),
|
|
@@ -5463,7 +5705,7 @@ function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagn
|
|
|
5463
5705
|
() => identityKey === null ? null : JSON.parse(identityKey),
|
|
5464
5706
|
[identityKey]
|
|
5465
5707
|
);
|
|
5466
|
-
|
|
5708
|
+
useEffect16(() => {
|
|
5467
5709
|
if (sessionId === null || identity === null) return;
|
|
5468
5710
|
const { facts, claim } = splitIdentity(identity);
|
|
5469
5711
|
identify({
|
|
@@ -5482,8 +5724,8 @@ function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagn
|
|
|
5482
5724
|
) ?? false;
|
|
5483
5725
|
const now = useNow(hasLiveDots ? 1e3 : 6e4);
|
|
5484
5726
|
const takeDiagnostics = useDiagnostics(diagnostics, appState);
|
|
5485
|
-
const [isSending, setIsSending] =
|
|
5486
|
-
const [sendError, setSendError] =
|
|
5727
|
+
const [isSending, setIsSending] = useState16(false);
|
|
5728
|
+
const [sendError, setSendError] = useState16(null);
|
|
5487
5729
|
const agent = useMemo2(
|
|
5488
5730
|
() => config === void 0 ? null : {
|
|
5489
5731
|
id: "median-agent",
|
|
@@ -5556,15 +5798,17 @@ function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagn
|
|
|
5556
5798
|
team: [...[...humans.values()].slice(-2), agent]
|
|
5557
5799
|
};
|
|
5558
5800
|
}, [config, agent, messages]);
|
|
5559
|
-
const [lastSeenAt, setLastSeenAt] =
|
|
5560
|
-
const
|
|
5801
|
+
const [lastSeenAt, setLastSeenAt] = useState16(() => readLastSeenAt(apiKey));
|
|
5802
|
+
const unread = useMemo2(
|
|
5561
5803
|
() => messages.filter(
|
|
5562
5804
|
(message) => message.sender === "agent" && !message.pending && (message.sentAt ?? 0) > lastSeenAt
|
|
5563
|
-
)
|
|
5805
|
+
),
|
|
5564
5806
|
[messages, lastSeenAt]
|
|
5565
5807
|
);
|
|
5566
|
-
const
|
|
5567
|
-
const [
|
|
5808
|
+
const unreadCount = unread.length;
|
|
5809
|
+
const latestUnread = messagePreview && (config?.messagePreview ?? true) ? unread[unread.length - 1] ?? null : null;
|
|
5810
|
+
const [picked, setPicked] = useState16(null);
|
|
5811
|
+
const [skipped, setSkipped] = useState16(
|
|
5568
5812
|
() => readSkippedRatings(apiKey)
|
|
5569
5813
|
);
|
|
5570
5814
|
const conversationId = thread?.conversationId ?? null;
|
|
@@ -5604,7 +5848,7 @@ function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagn
|
|
|
5604
5848
|
const custom = takeCustomData();
|
|
5605
5849
|
try {
|
|
5606
5850
|
const attachments = await uploadAttachments(
|
|
5607
|
-
() => generateUploadUrl({ apiKey }),
|
|
5851
|
+
() => generateUploadUrl({ apiKey, sessionId }),
|
|
5608
5852
|
files
|
|
5609
5853
|
);
|
|
5610
5854
|
const context = telemetry ? collectContext() : void 0;
|
|
@@ -5676,6 +5920,8 @@ function useMedianThread(apiKey, user, telemetry = true, isLocked = false, diagn
|
|
|
5676
5920
|
rating,
|
|
5677
5921
|
/** Replies that arrived while they were not looking. */
|
|
5678
5922
|
unreadCount,
|
|
5923
|
+
/** The newest of those, for the card on the closed button. */
|
|
5924
|
+
latestUnread,
|
|
5679
5925
|
markSeen,
|
|
5680
5926
|
/** Say the panel is on screen, so replies are not also emailed. */
|
|
5681
5927
|
reportPresence,
|
|
@@ -5890,7 +6136,7 @@ var MedianErrorBoundary = class extends Component {
|
|
|
5890
6136
|
};
|
|
5891
6137
|
|
|
5892
6138
|
// ../../apps/web/src/components/support-widget/sdk/use-identity.ts
|
|
5893
|
-
import { useEffect as
|
|
6139
|
+
import { useEffect as useEffect17, useState as useState17 } from "react";
|
|
5894
6140
|
var NOTHING = {
|
|
5895
6141
|
apiKey: void 0,
|
|
5896
6142
|
user: void 0,
|
|
@@ -5919,7 +6165,7 @@ function read3(endpoint) {
|
|
|
5919
6165
|
return request;
|
|
5920
6166
|
}
|
|
5921
6167
|
function useMissingCredentials(component, apiKey, endpoint) {
|
|
5922
|
-
|
|
6168
|
+
useEffect17(() => {
|
|
5923
6169
|
if (apiKey !== void 0 || endpoint !== void 0) return;
|
|
5924
6170
|
console.error(
|
|
5925
6171
|
`Median: <${component}> was given neither apiKey nor identity, so nothing is on the page. Pass the median_pk_ id from publicKeyFromMedianKey(MEDIAN_KEY), or the path of a route built with medianIdentity().`
|
|
@@ -5927,8 +6173,8 @@ function useMissingCredentials(component, apiKey, endpoint) {
|
|
|
5927
6173
|
}, [component, apiKey, endpoint]);
|
|
5928
6174
|
}
|
|
5929
6175
|
function useMedianIdentity(endpoint) {
|
|
5930
|
-
const [answered, setAnswered] =
|
|
5931
|
-
|
|
6176
|
+
const [answered, setAnswered] = useState17(null);
|
|
6177
|
+
useEffect17(() => {
|
|
5932
6178
|
if (endpoint === void 0) return;
|
|
5933
6179
|
let listening = true;
|
|
5934
6180
|
void (async () => {
|
|
@@ -6281,7 +6527,7 @@ function play(sound = "chime", options) {
|
|
|
6281
6527
|
}
|
|
6282
6528
|
|
|
6283
6529
|
// ../../apps/web/src/components/support-widget/sdk/use-message-sound.ts
|
|
6284
|
-
import { useEffect as
|
|
6530
|
+
import { useEffect as useEffect18, useRef as useRef14 } from "react";
|
|
6285
6531
|
var ARRIVAL_VOLUME = 0.45;
|
|
6286
6532
|
function useMessageSound({
|
|
6287
6533
|
messages,
|
|
@@ -6290,7 +6536,7 @@ function useMessageSound({
|
|
|
6290
6536
|
}) {
|
|
6291
6537
|
const heard = useRef14(null);
|
|
6292
6538
|
const watching = useRef14(null);
|
|
6293
|
-
|
|
6539
|
+
useEffect18(() => {
|
|
6294
6540
|
if (isLoading) {
|
|
6295
6541
|
heard.current = null;
|
|
6296
6542
|
return;
|
|
@@ -6314,9 +6560,13 @@ function useMessageSound({
|
|
|
6314
6560
|
}
|
|
6315
6561
|
|
|
6316
6562
|
// ../../apps/web/src/components/support-widget/sdk/use-navigation.ts
|
|
6317
|
-
import { useLayoutEffect as
|
|
6563
|
+
import { useCallback as useCallback12, useEffect as useEffect19, useLayoutEffect as useLayoutEffect7, useRef as useRef15, useState as useState18 } from "react";
|
|
6318
6564
|
var isDevelopment2 = typeof process !== "undefined" && process.env.NODE_ENV === "development";
|
|
6319
6565
|
var STALE_AFTER_MS = 5 * 60 * 1e3;
|
|
6566
|
+
function isFresh(at2) {
|
|
6567
|
+
const age = Date.now() - at2;
|
|
6568
|
+
return Number.isFinite(age) && age <= STALE_AFTER_MS;
|
|
6569
|
+
}
|
|
6320
6570
|
function pathOnThisSite(destination) {
|
|
6321
6571
|
if (typeof window === "undefined") return null;
|
|
6322
6572
|
if (!destination.startsWith("/")) return null;
|
|
@@ -6329,19 +6579,22 @@ function pathOnThisSite(destination) {
|
|
|
6329
6579
|
if (url.origin !== window.location.origin) return null;
|
|
6330
6580
|
return `${url.pathname}${url.search}${url.hash}`;
|
|
6331
6581
|
}
|
|
6332
|
-
function
|
|
6333
|
-
const asked =
|
|
6334
|
-
|
|
6335
|
-
|
|
6336
|
-
|
|
6337
|
-
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
6342
|
-
|
|
6343
|
-
|
|
6344
|
-
|
|
6582
|
+
function ringing(messages, ask) {
|
|
6583
|
+
const asked = [];
|
|
6584
|
+
for (const message of messages) {
|
|
6585
|
+
if (message.highlight === void 0) continue;
|
|
6586
|
+
if (message.navigateTo !== void 0) continue;
|
|
6587
|
+
asked.push({
|
|
6588
|
+
key: message.id,
|
|
6589
|
+
// Canned content may leave the clock off, and a message with no time on
|
|
6590
|
+
// it reads as old here rather than as now.
|
|
6591
|
+
at: message.sentAt ?? 0,
|
|
6592
|
+
selector: message.highlight
|
|
6593
|
+
});
|
|
6594
|
+
}
|
|
6595
|
+
if (ask !== null && ask.highlight !== null && ask.navigateTo === null) {
|
|
6596
|
+
asked.push({ key: ask.key, at: ask.at, selector: ask.highlight });
|
|
6597
|
+
}
|
|
6345
6598
|
return asked;
|
|
6346
6599
|
}
|
|
6347
6600
|
function useSupportNavigation({
|
|
@@ -6353,10 +6606,34 @@ function useSupportNavigation({
|
|
|
6353
6606
|
}) {
|
|
6354
6607
|
const seen = useRef15(null);
|
|
6355
6608
|
const watching = useRef15(null);
|
|
6356
|
-
const [
|
|
6357
|
-
|
|
6609
|
+
const [spotlight, setSpotlight] = useState18(null);
|
|
6610
|
+
const drawn = useRef15(0);
|
|
6611
|
+
const [taken, setTaken] = useState18(null);
|
|
6612
|
+
const follow = useCallback12(
|
|
6613
|
+
(destination) => {
|
|
6614
|
+
if (onNavigate === void 0) return;
|
|
6615
|
+
const path = pathOnThisSite(destination.path);
|
|
6616
|
+
if (path === null) {
|
|
6617
|
+
console.error(
|
|
6618
|
+
`Median: refused to navigate to ${destination.path}, which is not a path on this site.`
|
|
6619
|
+
);
|
|
6620
|
+
return;
|
|
6621
|
+
}
|
|
6622
|
+
onNavigate(path);
|
|
6623
|
+
setTaken(destination.key);
|
|
6624
|
+
if (destination.highlight !== null) {
|
|
6625
|
+
drawn.current += 1;
|
|
6626
|
+
setSpotlight({
|
|
6627
|
+
key: `${destination.key}:${drawn.current}`,
|
|
6628
|
+
selector: destination.highlight
|
|
6629
|
+
});
|
|
6630
|
+
}
|
|
6631
|
+
},
|
|
6632
|
+
[onNavigate]
|
|
6633
|
+
);
|
|
6634
|
+
useLayoutEffect7(() => {
|
|
6358
6635
|
if (isLoading) return;
|
|
6359
|
-
const asked =
|
|
6636
|
+
const asked = ringing(messages, ask);
|
|
6360
6637
|
if (seen.current === null || watching.current !== conversationId) {
|
|
6361
6638
|
seen.current = new Set(asked.map((one) => one.key));
|
|
6362
6639
|
watching.current = conversationId;
|
|
@@ -6366,51 +6643,73 @@ function useSupportNavigation({
|
|
|
6366
6643
|
for (const one of asked) {
|
|
6367
6644
|
if (seen.current.has(one.key)) continue;
|
|
6368
6645
|
seen.current.add(one.key);
|
|
6369
|
-
|
|
6370
|
-
|
|
6371
|
-
|
|
6372
|
-
const destination = one.navigateTo;
|
|
6373
|
-
if (destination !== null) {
|
|
6374
|
-
const path = pathOnThisSite(destination);
|
|
6375
|
-
if (onNavigate === void 0) {
|
|
6376
|
-
if (isDevelopment2) {
|
|
6377
|
-
console.warn(
|
|
6378
|
-
`Median: a tool asked to take this visitor to ${destination}, but <MedianSupport> has no onNavigate. Pass one, such as onNavigate={router.push}, or the tool cannot move anybody.`
|
|
6379
|
-
);
|
|
6380
|
-
}
|
|
6381
|
-
} else if (path === null) {
|
|
6382
|
-
console.error(
|
|
6383
|
-
`Median: refused to navigate to ${destination}, which is not a path on this site.`
|
|
6384
|
-
);
|
|
6385
|
-
} else {
|
|
6386
|
-
onNavigate(path);
|
|
6387
|
-
didNavigate = true;
|
|
6388
|
-
}
|
|
6389
|
-
}
|
|
6390
|
-
latest = { key: one.key, didNavigate, selector: one.highlight };
|
|
6646
|
+
if (!isFresh(one.at)) continue;
|
|
6647
|
+
drawn.current += 1;
|
|
6648
|
+
latest = { key: `${one.key}:${drawn.current}`, selector: one.selector };
|
|
6391
6649
|
}
|
|
6392
|
-
|
|
6393
|
-
|
|
6394
|
-
|
|
6395
|
-
|
|
6396
|
-
|
|
6397
|
-
|
|
6398
|
-
|
|
6399
|
-
|
|
6650
|
+
if (latest !== null) setSpotlight(latest);
|
|
6651
|
+
}, [messages, ask, conversationId, isLoading]);
|
|
6652
|
+
const warned = useRef15(false);
|
|
6653
|
+
useEffect19(() => {
|
|
6654
|
+
if (!isDevelopment2 || onNavigate !== void 0 || warned.current) return;
|
|
6655
|
+
const offered = messages.some((message) => message.navigateTo !== void 0) || ask?.navigateTo != null;
|
|
6656
|
+
if (!offered) return;
|
|
6657
|
+
warned.current = true;
|
|
6658
|
+
console.warn(
|
|
6659
|
+
"Median: a tool offered to take this visitor to a page, but <MedianSupport> has no onNavigate, so no button is shown for it. Pass one, such as onNavigate={router.push}."
|
|
6660
|
+
);
|
|
6661
|
+
}, [messages, ask, onNavigate]);
|
|
6662
|
+
const [, expire] = useState18(0);
|
|
6663
|
+
useEffect19(() => {
|
|
6664
|
+
if (ask === null || ask.navigateTo === null) return;
|
|
6665
|
+
const left = ask.at + STALE_AFTER_MS - Date.now();
|
|
6666
|
+
if (left <= 0) return;
|
|
6667
|
+
const timer = setTimeout(() => expire((count) => count + 1), left);
|
|
6668
|
+
return () => clearTimeout(timer);
|
|
6669
|
+
}, [ask]);
|
|
6670
|
+
const offer = ask !== null && ask.navigateTo !== null && ask.key !== taken && onNavigate !== void 0 && isFresh(ask.at) ? { key: ask.key, path: ask.navigateTo, highlight: ask.highlight } : null;
|
|
6671
|
+
return { spotlight, offer, follow };
|
|
6672
|
+
}
|
|
6673
|
+
|
|
6674
|
+
// ../../apps/web/src/components/support-widget/sdk/use-teaser.ts
|
|
6675
|
+
import { useCallback as useCallback13, useState as useState19 } from "react";
|
|
6676
|
+
|
|
6677
|
+
// ../../apps/web/src/components/support-widget/sdk/teaser-state.ts
|
|
6678
|
+
var TEASER = "teaser";
|
|
6679
|
+
function readTeaserDismissedAt(apiKey) {
|
|
6680
|
+
return readStamp(TEASER, apiKey);
|
|
6681
|
+
}
|
|
6682
|
+
function writeTeaserDismissedAt(apiKey, at2) {
|
|
6683
|
+
writeStamp(TEASER, apiKey, at2);
|
|
6684
|
+
}
|
|
6685
|
+
|
|
6686
|
+
// ../../apps/web/src/components/support-widget/sdk/use-teaser.ts
|
|
6687
|
+
function useTeaser(apiKey, latestUnread) {
|
|
6688
|
+
const [dismissedAt, setDismissedAt] = useState19(
|
|
6689
|
+
() => readTeaserDismissedAt(apiKey)
|
|
6690
|
+
);
|
|
6691
|
+
const teaser = latestUnread !== null && (latestUnread.sentAt ?? 0) > dismissedAt ? latestUnread : null;
|
|
6692
|
+
const dismiss = useCallback13(() => {
|
|
6693
|
+
if (teaser === null) return;
|
|
6694
|
+
const at2 = teaser.sentAt ?? Date.now();
|
|
6695
|
+
writeTeaserDismissedAt(apiKey, at2);
|
|
6696
|
+
setDismissedAt(at2);
|
|
6697
|
+
}, [apiKey, teaser]);
|
|
6698
|
+
return { teaser, dismiss };
|
|
6400
6699
|
}
|
|
6401
6700
|
|
|
6402
6701
|
// ../../apps/web/src/components/support-widget/sdk/median-support.tsx
|
|
6403
|
-
import { Fragment as
|
|
6702
|
+
import { Fragment as Fragment28, jsx as jsx35, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
6404
6703
|
var PRESENCE_BEAT_MS = 45e3;
|
|
6405
6704
|
function MedianSupport(props) {
|
|
6406
|
-
return /* @__PURE__ */
|
|
6705
|
+
return /* @__PURE__ */ jsx35(MedianSupportPreview, { ...props });
|
|
6407
6706
|
}
|
|
6408
6707
|
function MedianSupportPreview({
|
|
6409
6708
|
defaultOpen = false,
|
|
6410
6709
|
className,
|
|
6411
6710
|
...props
|
|
6412
6711
|
}) {
|
|
6413
|
-
return /* @__PURE__ */
|
|
6712
|
+
return /* @__PURE__ */ jsx35(MedianErrorBoundary, { children: /* @__PURE__ */ jsx35(
|
|
6414
6713
|
MedianIdentity,
|
|
6415
6714
|
{
|
|
6416
6715
|
...props,
|
|
@@ -6424,7 +6723,7 @@ function MedianIdentity({ apiKey, identity, user, ...rest }) {
|
|
|
6424
6723
|
useMissingCredentials("MedianSupport", apiKey, identity);
|
|
6425
6724
|
const key = apiKey ?? resolved.apiKey;
|
|
6426
6725
|
if (key === void 0) return null;
|
|
6427
|
-
return /* @__PURE__ */
|
|
6726
|
+
return /* @__PURE__ */ jsx35(
|
|
6428
6727
|
MedianConnection,
|
|
6429
6728
|
{
|
|
6430
6729
|
...rest,
|
|
@@ -6444,7 +6743,7 @@ function useApiKeyShapeWarning(apiKey) {
|
|
|
6444
6743
|
}, [apiKey]);
|
|
6445
6744
|
}
|
|
6446
6745
|
function MedianConnection(props) {
|
|
6447
|
-
const [client2] =
|
|
6746
|
+
const [client2] = useState20(() => {
|
|
6448
6747
|
if (!MEDIAN_DEPLOYMENT_URL) {
|
|
6449
6748
|
throw new Error(
|
|
6450
6749
|
"The Median widget was built without a deployment URL. Set NEXT_PUBLIC_CONVEX_URL."
|
|
@@ -6452,7 +6751,7 @@ function MedianConnection(props) {
|
|
|
6452
6751
|
}
|
|
6453
6752
|
return new ConvexReactClient(MEDIAN_DEPLOYMENT_URL);
|
|
6454
6753
|
});
|
|
6455
|
-
return /* @__PURE__ */
|
|
6754
|
+
return /* @__PURE__ */ jsx35(ConvexProvider, { client: client2, children: /* @__PURE__ */ jsx35(MedianLauncher, { ...props }) });
|
|
6456
6755
|
}
|
|
6457
6756
|
function MedianLauncher({
|
|
6458
6757
|
apiKey,
|
|
@@ -6463,6 +6762,7 @@ function MedianLauncher({
|
|
|
6463
6762
|
requireSignIn = false,
|
|
6464
6763
|
onSignIn,
|
|
6465
6764
|
requireEmail = true,
|
|
6765
|
+
messagePreview = true,
|
|
6466
6766
|
launcher,
|
|
6467
6767
|
defaultOpen,
|
|
6468
6768
|
open,
|
|
@@ -6492,6 +6792,7 @@ function MedianLauncher({
|
|
|
6492
6792
|
awaitingHuman,
|
|
6493
6793
|
rating,
|
|
6494
6794
|
unreadCount,
|
|
6795
|
+
latestUnread,
|
|
6495
6796
|
markSeen,
|
|
6496
6797
|
reportPresence,
|
|
6497
6798
|
sendError,
|
|
@@ -6504,8 +6805,10 @@ function MedianLauncher({
|
|
|
6504
6805
|
isLocked,
|
|
6505
6806
|
diagnostics,
|
|
6506
6807
|
appState,
|
|
6507
|
-
requireEmail
|
|
6808
|
+
requireEmail,
|
|
6809
|
+
messagePreview
|
|
6508
6810
|
);
|
|
6811
|
+
const { teaser, dismiss: dismissTeaser } = useTeaser(apiKey, latestUnread);
|
|
6509
6812
|
const isSettling = isLoading || isResolvingIdentity;
|
|
6510
6813
|
useEffect20(() => {
|
|
6511
6814
|
if (isOpen) markSeen();
|
|
@@ -6529,7 +6832,7 @@ function MedianLauncher({
|
|
|
6529
6832
|
window.removeEventListener("focus", beat);
|
|
6530
6833
|
};
|
|
6531
6834
|
}, [isOpen, reportPresence]);
|
|
6532
|
-
const
|
|
6835
|
+
const { spotlight, offer, follow } = useSupportNavigation({
|
|
6533
6836
|
messages,
|
|
6534
6837
|
ask,
|
|
6535
6838
|
// Signing in is the case this exists for. A page that has been watching
|
|
@@ -6552,20 +6855,9 @@ function MedianLauncher({
|
|
|
6552
6855
|
status: "Connecting",
|
|
6553
6856
|
team: []
|
|
6554
6857
|
};
|
|
6555
|
-
|
|
6556
|
-
|
|
6557
|
-
|
|
6558
|
-
WidgetSpotlight,
|
|
6559
|
-
{
|
|
6560
|
-
selector: direction.selector
|
|
6561
|
-
},
|
|
6562
|
-
`ring:${direction.key}`
|
|
6563
|
-
),
|
|
6564
|
-
direction?.didNavigate === true && mover !== void 0 && /* @__PURE__ */ jsxs18(WidgetToast, { agent: mover, children: [
|
|
6565
|
-
mover.name,
|
|
6566
|
-
" navigated you here"
|
|
6567
|
-
] }, `moved:${direction.key}`),
|
|
6568
|
-
/* @__PURE__ */ jsx33(
|
|
6858
|
+
return /* @__PURE__ */ jsxs19(Fragment28, { children: [
|
|
6859
|
+
spotlight !== null && /* @__PURE__ */ jsx35(WidgetSpotlight, { selector: spotlight.selector }, spotlight.key),
|
|
6860
|
+
/* @__PURE__ */ jsx35(
|
|
6569
6861
|
SupportLauncher,
|
|
6570
6862
|
{
|
|
6571
6863
|
presence: resolvedPresence,
|
|
@@ -6580,7 +6872,11 @@ function MedianLauncher({
|
|
|
6580
6872
|
isSending,
|
|
6581
6873
|
awaitingHuman,
|
|
6582
6874
|
rating,
|
|
6875
|
+
offer,
|
|
6876
|
+
onFollow: onNavigate === void 0 ? void 0 : follow,
|
|
6583
6877
|
unreadCount,
|
|
6878
|
+
teaser,
|
|
6879
|
+
onDismissTeaser: dismissTeaser,
|
|
6584
6880
|
notice: sendError,
|
|
6585
6881
|
launcher,
|
|
6586
6882
|
open: isOpen,
|
|
@@ -6593,7 +6889,7 @@ function MedianLauncher({
|
|
|
6593
6889
|
|
|
6594
6890
|
// ../../apps/web/src/components/support-widget/sdk/mount.tsx
|
|
6595
6891
|
import { createRoot } from "react-dom/client";
|
|
6596
|
-
import { jsx as
|
|
6892
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
6597
6893
|
var isDevelopment3 = typeof process !== "undefined" && process.env.NODE_ENV === "development";
|
|
6598
6894
|
function mountMedianSupport(options) {
|
|
6599
6895
|
if (typeof document === "undefined") {
|
|
@@ -6611,7 +6907,7 @@ function mountMedianSupport(options) {
|
|
|
6611
6907
|
let current2 = options;
|
|
6612
6908
|
let mounted = true;
|
|
6613
6909
|
const render = () => {
|
|
6614
|
-
root.render(/* @__PURE__ */
|
|
6910
|
+
root.render(/* @__PURE__ */ jsx36(MedianSupport, { ...current2 }));
|
|
6615
6911
|
};
|
|
6616
6912
|
render();
|
|
6617
6913
|
return {
|
|
@@ -6638,17 +6934,24 @@ function mountMedianSupport(options) {
|
|
|
6638
6934
|
|
|
6639
6935
|
// ../../apps/web/src/components/support-widget/sdk/median-feedback.tsx
|
|
6640
6936
|
import { ConvexProvider as ConvexProvider2, ConvexReactClient as ConvexReactClient2 } from "convex/react";
|
|
6641
|
-
import { useCallback as
|
|
6937
|
+
import { useCallback as useCallback15, useEffect as useEffect23, useRef as useRef18, useState as useState24 } from "react";
|
|
6642
6938
|
|
|
6643
6939
|
// ../backend/convex/shared/feedback.ts
|
|
6644
6940
|
var NOTE_MAX_LENGTH = 2e3;
|
|
6645
6941
|
|
|
6942
|
+
// ../backend/convex/shared/reportImages.ts
|
|
6943
|
+
var MAX_REPORT_IMAGES = 6;
|
|
6944
|
+
|
|
6646
6945
|
// ../../apps/web/src/components/support-widget/feedback/feedback-panel.tsx
|
|
6647
|
-
import {
|
|
6946
|
+
import {
|
|
6947
|
+
useEffect as useEffect22,
|
|
6948
|
+
useRef as useRef17,
|
|
6949
|
+
useState as useState22
|
|
6950
|
+
} from "react";
|
|
6648
6951
|
|
|
6649
6952
|
// ../../apps/web/src/components/support-widget/feedback/feedback-popover.tsx
|
|
6650
6953
|
import { useEffect as useEffect21, useRef as useRef16 } from "react";
|
|
6651
|
-
import { createPortal as
|
|
6954
|
+
import { createPortal as createPortal2 } from "react-dom";
|
|
6652
6955
|
|
|
6653
6956
|
// ../../apps/web/src/components/support-widget/use-hydrated.ts
|
|
6654
6957
|
import { useSyncExternalStore as useSyncExternalStore10 } from "react";
|
|
@@ -6661,8 +6964,8 @@ function useHydrated() {
|
|
|
6661
6964
|
}
|
|
6662
6965
|
|
|
6663
6966
|
// ../../apps/web/src/components/support-widget/feedback/use-anchor.ts
|
|
6664
|
-
import { useLayoutEffect as
|
|
6665
|
-
var
|
|
6967
|
+
import { useLayoutEffect as useLayoutEffect8, useState as useState21 } from "react";
|
|
6968
|
+
var GAP2 = 8;
|
|
6666
6969
|
var MARGIN2 = 16;
|
|
6667
6970
|
function findAnchor(selector) {
|
|
6668
6971
|
if (selector === void 0 || typeof document === "undefined") return null;
|
|
@@ -6681,8 +6984,8 @@ function useAnchor({
|
|
|
6681
6984
|
panelRef,
|
|
6682
6985
|
isOpen
|
|
6683
6986
|
}) {
|
|
6684
|
-
const [side, setSide] =
|
|
6685
|
-
|
|
6987
|
+
const [side, setSide] = useState21("bottom");
|
|
6988
|
+
useLayoutEffect8(() => {
|
|
6686
6989
|
if (!isOpen) return;
|
|
6687
6990
|
let frame = 0;
|
|
6688
6991
|
function place() {
|
|
@@ -6702,11 +7005,11 @@ function useAnchor({
|
|
|
6702
7005
|
return;
|
|
6703
7006
|
}
|
|
6704
7007
|
const rect = trigger.getBoundingClientRect();
|
|
6705
|
-
const below = room.height - rect.bottom -
|
|
6706
|
-
const above = rect.top -
|
|
7008
|
+
const below = room.height - rect.bottom - GAP2 - MARGIN2;
|
|
7009
|
+
const above = rect.top - GAP2 - MARGIN2;
|
|
6707
7010
|
const onTop = height > below && above > below;
|
|
6708
7011
|
setSide(onTop ? "top" : "bottom");
|
|
6709
|
-
const top = onTop ? rect.top -
|
|
7012
|
+
const top = onTop ? rect.top - GAP2 - height : rect.bottom + GAP2;
|
|
6710
7013
|
const fromStart = rect.left;
|
|
6711
7014
|
const fromEnd = rect.right - width;
|
|
6712
7015
|
const left = fromStart + width + MARGIN2 <= room.width ? fromStart : fromEnd;
|
|
@@ -6736,8 +7039,8 @@ function clamp3(value, low, high) {
|
|
|
6736
7039
|
}
|
|
6737
7040
|
|
|
6738
7041
|
// ../../apps/web/src/components/support-widget/feedback/feedback-popover.tsx
|
|
6739
|
-
import { jsx as
|
|
6740
|
-
var
|
|
7042
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
7043
|
+
var LAYER2 = 2147483e3;
|
|
6741
7044
|
var AUTOFOCUS_ATTRIBUTE = "data-median-autofocus";
|
|
6742
7045
|
var MOTION = "transition-[opacity,scale,translate] motion-reduce:transition-none";
|
|
6743
7046
|
var OPEN = "duration-250 ease-spring";
|
|
@@ -6792,8 +7095,8 @@ function FeedbackPopover({
|
|
|
6792
7095
|
if (back && back !== document.body && back.isConnected) back.focus();
|
|
6793
7096
|
}, [isOpen, triggerRef]);
|
|
6794
7097
|
if (!isHydrated) return null;
|
|
6795
|
-
return
|
|
6796
|
-
/* @__PURE__ */
|
|
7098
|
+
return createPortal2(
|
|
7099
|
+
/* @__PURE__ */ jsx37(
|
|
6797
7100
|
"div",
|
|
6798
7101
|
{
|
|
6799
7102
|
ref: panelRef,
|
|
@@ -6801,7 +7104,7 @@ function FeedbackPopover({
|
|
|
6801
7104
|
inert: !isOpen,
|
|
6802
7105
|
"data-median-widget": "",
|
|
6803
7106
|
style: {
|
|
6804
|
-
zIndex:
|
|
7107
|
+
zIndex: LAYER2,
|
|
6805
7108
|
width,
|
|
6806
7109
|
top: 0,
|
|
6807
7110
|
left: 0,
|
|
@@ -6831,7 +7134,7 @@ function FeedbackPopover({
|
|
|
6831
7134
|
}
|
|
6832
7135
|
|
|
6833
7136
|
// ../../apps/web/src/components/support-widget/feedback/feedback-panel.tsx
|
|
6834
|
-
import { jsx as
|
|
7137
|
+
import { Fragment as Fragment29, jsx as jsx38, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
6835
7138
|
var THANKS_MS2 = 1600;
|
|
6836
7139
|
function FeedbackPanel({
|
|
6837
7140
|
onSubmit,
|
|
@@ -6844,10 +7147,16 @@ function FeedbackPanel({
|
|
|
6844
7147
|
placeholder = "What should change?",
|
|
6845
7148
|
className
|
|
6846
7149
|
}) {
|
|
6847
|
-
const [draft, setDraft] =
|
|
6848
|
-
const [isSending, setSending] =
|
|
6849
|
-
const [isSent, setSent] =
|
|
6850
|
-
const
|
|
7150
|
+
const [draft, setDraft] = useState22("");
|
|
7151
|
+
const [isSending, setSending] = useState22(false);
|
|
7152
|
+
const [isSent, setSent] = useState22(false);
|
|
7153
|
+
const fileInputRef = useRef17(null);
|
|
7154
|
+
const images = useAttachmentDrafts({
|
|
7155
|
+
accept: "image",
|
|
7156
|
+
max: MAX_REPORT_IMAGES
|
|
7157
|
+
});
|
|
7158
|
+
const target = useAttachmentTarget({ onFiles: images.add });
|
|
7159
|
+
const canSend = draft.trim().length > 0 && !images.hasBlocker && !isSending && !isSent;
|
|
6851
7160
|
useEffect22(() => {
|
|
6852
7161
|
if (!isSent) return;
|
|
6853
7162
|
const timer = setTimeout(() => onSent?.(), THANKS_MS2);
|
|
@@ -6857,24 +7166,30 @@ function FeedbackPanel({
|
|
|
6857
7166
|
if (!canSend) return;
|
|
6858
7167
|
setSending(true);
|
|
6859
7168
|
try {
|
|
6860
|
-
await onSubmit?.(draft.trim());
|
|
7169
|
+
await onSubmit?.(draft.trim(), images.files);
|
|
6861
7170
|
} catch {
|
|
6862
7171
|
return;
|
|
6863
7172
|
} finally {
|
|
6864
7173
|
setSending(false);
|
|
6865
7174
|
}
|
|
7175
|
+
images.clear();
|
|
6866
7176
|
setSent(true);
|
|
6867
7177
|
}
|
|
7178
|
+
function handlePick(event) {
|
|
7179
|
+
if (event.target.files?.length) images.add(event.target.files);
|
|
7180
|
+
event.target.value = "";
|
|
7181
|
+
}
|
|
6868
7182
|
function handleKeyDown(event) {
|
|
6869
7183
|
if (event.key !== "Enter") return;
|
|
6870
7184
|
if (!event.metaKey && !event.ctrlKey) return;
|
|
6871
7185
|
event.preventDefault();
|
|
6872
7186
|
void send();
|
|
6873
7187
|
}
|
|
6874
|
-
return /* @__PURE__ */
|
|
7188
|
+
return /* @__PURE__ */ jsxs20(
|
|
6875
7189
|
"section",
|
|
6876
7190
|
{
|
|
6877
7191
|
"aria-label": title,
|
|
7192
|
+
...target.targetProps,
|
|
6878
7193
|
className: cn(
|
|
6879
7194
|
// The widget's own radius scale, so the app's token can climb as the
|
|
6880
7195
|
// chrome gets rounder without this changing shape under its hosts.
|
|
@@ -6882,12 +7197,12 @@ function FeedbackPanel({
|
|
|
6882
7197
|
className
|
|
6883
7198
|
),
|
|
6884
7199
|
children: [
|
|
6885
|
-
/* @__PURE__ */
|
|
6886
|
-
/* @__PURE__ */
|
|
6887
|
-
/* @__PURE__ */
|
|
6888
|
-
/* @__PURE__ */
|
|
7200
|
+
/* @__PURE__ */ jsxs20("header", { className: "flex items-start gap-2", children: [
|
|
7201
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex min-w-0 flex-1 flex-col", children: [
|
|
7202
|
+
/* @__PURE__ */ jsx38("h2", { className: "truncate text-sm font-semibold tracking-tight", children: title }),
|
|
7203
|
+
/* @__PURE__ */ jsx38("p", { className: "text-xs text-muted-foreground", children: description })
|
|
6889
7204
|
] }),
|
|
6890
|
-
onClose && /* @__PURE__ */
|
|
7205
|
+
onClose && /* @__PURE__ */ jsx38(
|
|
6891
7206
|
WidgetButton,
|
|
6892
7207
|
{
|
|
6893
7208
|
type: "button",
|
|
@@ -6896,13 +7211,13 @@ function FeedbackPanel({
|
|
|
6896
7211
|
onClick: onClose,
|
|
6897
7212
|
"aria-label": "Close feedback",
|
|
6898
7213
|
className: "-mt-0.5 -mr-1 shrink-0 text-muted-foreground",
|
|
6899
|
-
children: /* @__PURE__ */
|
|
7214
|
+
children: /* @__PURE__ */ jsx38(X, {})
|
|
6900
7215
|
}
|
|
6901
7216
|
)
|
|
6902
7217
|
] }),
|
|
6903
|
-
/* @__PURE__ */
|
|
6904
|
-
/* @__PURE__ */
|
|
6905
|
-
/* @__PURE__ */
|
|
7218
|
+
/* @__PURE__ */ jsxs20("div", { className: "grid", children: [
|
|
7219
|
+
/* @__PURE__ */ jsx38(Collapse, { isOpen: !isSent, children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-1.5", children: [
|
|
7220
|
+
/* @__PURE__ */ jsx38(
|
|
6906
7221
|
Textarea,
|
|
6907
7222
|
{
|
|
6908
7223
|
rows: 3,
|
|
@@ -6910,7 +7225,7 @@ function FeedbackPanel({
|
|
|
6910
7225
|
maxLength: NOTE_MAX_LENGTH,
|
|
6911
7226
|
onChange: (event) => setDraft(event.target.value),
|
|
6912
7227
|
onKeyDown: handleKeyDown,
|
|
6913
|
-
placeholder,
|
|
7228
|
+
placeholder: target.isDropTarget ? "Drop to attach" : placeholder,
|
|
6914
7229
|
"aria-label": title,
|
|
6915
7230
|
...{ [AUTOFOCUS_ATTRIBUTE]: "" },
|
|
6916
7231
|
className: cn(
|
|
@@ -6922,44 +7237,79 @@ function FeedbackPanel({
|
|
|
6922
7237
|
)
|
|
6923
7238
|
}
|
|
6924
7239
|
),
|
|
6925
|
-
|
|
7240
|
+
images.drafts.length > 0 && /* @__PURE__ */ jsx38("div", { className: "flex flex-wrap gap-1.5", children: images.drafts.map((draft2) => /* @__PURE__ */ jsx38(
|
|
7241
|
+
AttachmentDraftChip,
|
|
7242
|
+
{
|
|
7243
|
+
draft: draft2,
|
|
7244
|
+
onRemove: () => images.remove(draft2.id)
|
|
7245
|
+
},
|
|
7246
|
+
draft2.id
|
|
7247
|
+
)) }),
|
|
7248
|
+
notice && /* @__PURE__ */ jsx38("p", { className: "animate-in px-0.5 text-xs text-destructive fade-in duration-150", children: notice })
|
|
6926
7249
|
] }) }),
|
|
6927
|
-
/* @__PURE__ */
|
|
6928
|
-
/* @__PURE__ */
|
|
7250
|
+
/* @__PURE__ */ jsx38(Collapse, { isOpen: isSent, children: /* @__PURE__ */ jsxs20("div", { className: "flex items-center justify-center gap-2 py-4 text-sm font-medium", children: [
|
|
7251
|
+
/* @__PURE__ */ jsx38("span", { className: "grid size-5 shrink-0 place-items-center rounded-full bg-primary text-primary-foreground", children: /* @__PURE__ */ jsx38(Check, { className: "size-3" }) }),
|
|
6929
7252
|
"Thanks, we got it."
|
|
6930
7253
|
] }) })
|
|
6931
7254
|
] }),
|
|
6932
|
-
/* @__PURE__ */
|
|
6933
|
-
showBadge && /* @__PURE__ */
|
|
6934
|
-
!isSent && /* @__PURE__ */
|
|
6935
|
-
|
|
6936
|
-
|
|
6937
|
-
|
|
6938
|
-
|
|
6939
|
-
|
|
6940
|
-
|
|
6941
|
-
|
|
6942
|
-
|
|
6943
|
-
|
|
6944
|
-
|
|
6945
|
-
|
|
6946
|
-
|
|
6947
|
-
|
|
6948
|
-
|
|
6949
|
-
|
|
6950
|
-
|
|
6951
|
-
|
|
6952
|
-
|
|
6953
|
-
|
|
6954
|
-
|
|
6955
|
-
|
|
6956
|
-
|
|
6957
|
-
|
|
6958
|
-
|
|
6959
|
-
|
|
6960
|
-
|
|
6961
|
-
|
|
6962
|
-
|
|
7255
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex min-h-8 items-center gap-2", children: [
|
|
7256
|
+
showBadge && /* @__PURE__ */ jsx38(PoweredByMedian, { className: "justify-start" }),
|
|
7257
|
+
!isSent && /* @__PURE__ */ jsxs20(Fragment29, { children: [
|
|
7258
|
+
/* @__PURE__ */ jsx38(
|
|
7259
|
+
"input",
|
|
7260
|
+
{
|
|
7261
|
+
ref: fileInputRef,
|
|
7262
|
+
type: "file",
|
|
7263
|
+
accept: "image/*",
|
|
7264
|
+
multiple: true,
|
|
7265
|
+
tabIndex: -1,
|
|
7266
|
+
onChange: handlePick,
|
|
7267
|
+
className: "sr-only"
|
|
7268
|
+
}
|
|
7269
|
+
),
|
|
7270
|
+
/* @__PURE__ */ jsx38(
|
|
7271
|
+
WidgetButton,
|
|
7272
|
+
{
|
|
7273
|
+
type: "button",
|
|
7274
|
+
variant: "ghost",
|
|
7275
|
+
size: "icon",
|
|
7276
|
+
disabled: images.isFull,
|
|
7277
|
+
onClick: () => fileInputRef.current?.click(),
|
|
7278
|
+
"aria-label": "Add a picture",
|
|
7279
|
+
className: "ml-auto shrink-0 rounded-full text-muted-foreground",
|
|
7280
|
+
children: /* @__PURE__ */ jsx38(ImageSquare, {})
|
|
7281
|
+
}
|
|
7282
|
+
),
|
|
7283
|
+
/* @__PURE__ */ jsxs20(
|
|
7284
|
+
WidgetButton,
|
|
7285
|
+
{
|
|
7286
|
+
type: "button",
|
|
7287
|
+
disabled: !canSend,
|
|
7288
|
+
"aria-busy": isSending,
|
|
7289
|
+
onClick: () => void send(),
|
|
7290
|
+
className: "relative shrink-0 rounded-full px-3",
|
|
7291
|
+
children: [
|
|
7292
|
+
/* @__PURE__ */ jsx38(
|
|
7293
|
+
"span",
|
|
7294
|
+
{
|
|
7295
|
+
className: cn(
|
|
7296
|
+
"transition-opacity duration-150 motion-reduce:transition-none",
|
|
7297
|
+
isSending && "opacity-0"
|
|
7298
|
+
),
|
|
7299
|
+
children: "Submit feedback"
|
|
7300
|
+
}
|
|
7301
|
+
),
|
|
7302
|
+
isSending && /* @__PURE__ */ jsx38(
|
|
7303
|
+
ArrowsClockwise,
|
|
7304
|
+
{
|
|
7305
|
+
"aria-hidden": true,
|
|
7306
|
+
className: "absolute inset-0 m-auto animate-spin motion-reduce:animate-none"
|
|
7307
|
+
}
|
|
7308
|
+
)
|
|
7309
|
+
]
|
|
7310
|
+
}
|
|
7311
|
+
)
|
|
7312
|
+
] })
|
|
6963
7313
|
] })
|
|
6964
7314
|
]
|
|
6965
7315
|
}
|
|
@@ -7011,7 +7361,7 @@ function useRegisterMedianFeedback() {
|
|
|
7011
7361
|
|
|
7012
7362
|
// ../../apps/web/src/components/support-widget/sdk/use-feedback-note.ts
|
|
7013
7363
|
import { useMutation as useMutation2 } from "convex/react";
|
|
7014
|
-
import { useCallback as
|
|
7364
|
+
import { useCallback as useCallback14, useState as useState23, useSyncExternalStore as useSyncExternalStore12 } from "react";
|
|
7015
7365
|
var REFUSALS = {
|
|
7016
7366
|
off: "This site is not taking feedback right now.",
|
|
7017
7367
|
empty: "Write something first."
|
|
@@ -7025,14 +7375,15 @@ function useFeedbackNote({
|
|
|
7025
7375
|
}) {
|
|
7026
7376
|
const sessionId = useSyncExternalStore12(
|
|
7027
7377
|
subscribeSession,
|
|
7028
|
-
|
|
7378
|
+
useCallback14(() => getOrCreateSessionId(apiKey), [apiKey]),
|
|
7029
7379
|
() => null
|
|
7030
7380
|
);
|
|
7031
7381
|
const submitNote = useMutation2(api.feedback.submit);
|
|
7382
|
+
const getUploadUrl = useMutation2(api.widget.generateUploadUrl);
|
|
7032
7383
|
const takeDiagnostics = useDiagnostics(diagnostics, appState);
|
|
7033
|
-
const [notice, setNotice] =
|
|
7034
|
-
const submit =
|
|
7035
|
-
async (body) => {
|
|
7384
|
+
const [notice, setNotice] = useState23(null);
|
|
7385
|
+
const submit = useCallback14(
|
|
7386
|
+
async (body, images = []) => {
|
|
7036
7387
|
setNotice(null);
|
|
7037
7388
|
if (sessionId === null) {
|
|
7038
7389
|
setNotice("This browser is still waking up. Try again in a moment.");
|
|
@@ -7045,6 +7396,10 @@ function useFeedbackNote({
|
|
|
7045
7396
|
const page = telemetry ? collectPage() : void 0;
|
|
7046
7397
|
const collected = takeDiagnostics();
|
|
7047
7398
|
const { facts, claim } = splitIdentity(user ?? null);
|
|
7399
|
+
const attached = await uploadAttachments(
|
|
7400
|
+
() => getUploadUrl({ apiKey, sessionId }),
|
|
7401
|
+
images
|
|
7402
|
+
);
|
|
7048
7403
|
const outcome = await submitNote({
|
|
7049
7404
|
apiKey,
|
|
7050
7405
|
sessionId,
|
|
@@ -7054,7 +7409,8 @@ function useFeedbackNote({
|
|
|
7054
7409
|
...context ? { context } : {},
|
|
7055
7410
|
...page ? { page } : {},
|
|
7056
7411
|
...collected ? { diagnostics: collected } : {},
|
|
7057
|
-
...custom ? { customData: custom } : {}
|
|
7412
|
+
...custom ? { customData: custom } : {},
|
|
7413
|
+
...attached.length > 0 ? { images: attached } : {}
|
|
7058
7414
|
});
|
|
7059
7415
|
if (outcome !== "taken") {
|
|
7060
7416
|
explained = true;
|
|
@@ -7070,16 +7426,24 @@ function useFeedbackNote({
|
|
|
7070
7426
|
throw caught;
|
|
7071
7427
|
}
|
|
7072
7428
|
},
|
|
7073
|
-
[
|
|
7429
|
+
[
|
|
7430
|
+
apiKey,
|
|
7431
|
+
sessionId,
|
|
7432
|
+
user,
|
|
7433
|
+
telemetry,
|
|
7434
|
+
takeDiagnostics,
|
|
7435
|
+
submitNote,
|
|
7436
|
+
getUploadUrl
|
|
7437
|
+
]
|
|
7074
7438
|
);
|
|
7075
7439
|
return { submit, notice, clearNotice: () => setNotice(null) };
|
|
7076
7440
|
}
|
|
7077
7441
|
|
|
7078
7442
|
// ../../apps/web/src/components/support-widget/sdk/median-feedback.tsx
|
|
7079
|
-
import { Fragment as
|
|
7443
|
+
import { Fragment as Fragment30, jsx as jsx39, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
7080
7444
|
var DEFAULT_WIDTH2 = "20rem";
|
|
7081
7445
|
function MedianFeedback(props) {
|
|
7082
|
-
return /* @__PURE__ */
|
|
7446
|
+
return /* @__PURE__ */ jsx39(MedianErrorBoundary, { children: /* @__PURE__ */ jsx39(FeedbackIdentity, { ...props }) });
|
|
7083
7447
|
}
|
|
7084
7448
|
function FeedbackIdentity({
|
|
7085
7449
|
apiKey,
|
|
@@ -7092,7 +7456,7 @@ function FeedbackIdentity({
|
|
|
7092
7456
|
const key = apiKey ?? resolved.apiKey;
|
|
7093
7457
|
const person = user ?? resolved.user;
|
|
7094
7458
|
if (key === void 0) return null;
|
|
7095
|
-
return /* @__PURE__ */
|
|
7459
|
+
return /* @__PURE__ */ jsx39(
|
|
7096
7460
|
FeedbackConnection,
|
|
7097
7461
|
{
|
|
7098
7462
|
...rest,
|
|
@@ -7111,7 +7475,7 @@ function useApiKeyShapeWarning2(apiKey) {
|
|
|
7111
7475
|
}, [apiKey]);
|
|
7112
7476
|
}
|
|
7113
7477
|
function FeedbackConnection(props) {
|
|
7114
|
-
const [client2] =
|
|
7478
|
+
const [client2] = useState24(() => {
|
|
7115
7479
|
if (!MEDIAN_DEPLOYMENT_URL) {
|
|
7116
7480
|
throw new Error(
|
|
7117
7481
|
"The Median feedback panel was built without a deployment URL. Set NEXT_PUBLIC_CONVEX_URL."
|
|
@@ -7119,7 +7483,7 @@ function FeedbackConnection(props) {
|
|
|
7119
7483
|
}
|
|
7120
7484
|
return new ConvexReactClient2(MEDIAN_DEPLOYMENT_URL);
|
|
7121
7485
|
});
|
|
7122
|
-
return /* @__PURE__ */
|
|
7486
|
+
return /* @__PURE__ */ jsx39(ConvexProvider2, { client: client2, children: /* @__PURE__ */ jsx39(Feedback, { ...props }) });
|
|
7123
7487
|
}
|
|
7124
7488
|
function Feedback({
|
|
7125
7489
|
apiKey,
|
|
@@ -7139,7 +7503,7 @@ function Feedback({
|
|
|
7139
7503
|
useRegisterMedianFeedback();
|
|
7140
7504
|
useApiKeyShapeWarning2(apiKey);
|
|
7141
7505
|
useRememberInstall(apiKey, user);
|
|
7142
|
-
const triggerRef =
|
|
7506
|
+
const triggerRef = useRef18(null);
|
|
7143
7507
|
const [isOpen, setOpen] = useMedianFeedbackOpenState({
|
|
7144
7508
|
...open !== void 0 ? { open } : {},
|
|
7145
7509
|
...onOpenChange ? { onOpenChange } : {}
|
|
@@ -7151,20 +7515,20 @@ function Feedback({
|
|
|
7151
7515
|
...diagnostics !== void 0 ? { diagnostics } : {},
|
|
7152
7516
|
...appState ? { appState } : {}
|
|
7153
7517
|
});
|
|
7154
|
-
const close =
|
|
7155
|
-
const [attempt, setAttempt] =
|
|
7156
|
-
const hasSent =
|
|
7518
|
+
const close = useCallback15(() => setOpen(false), [setOpen]);
|
|
7519
|
+
const [attempt, setAttempt] = useState24(0);
|
|
7520
|
+
const hasSent = useRef18(false);
|
|
7157
7521
|
useEffect23(() => {
|
|
7158
7522
|
if (!isOpen || !hasSent.current) return;
|
|
7159
7523
|
hasSent.current = false;
|
|
7160
7524
|
setAttempt((count) => count + 1);
|
|
7161
7525
|
}, [isOpen]);
|
|
7162
|
-
return /* @__PURE__ */
|
|
7526
|
+
return /* @__PURE__ */ jsxs21(Fragment30, { children: [
|
|
7163
7527
|
children !== void 0 && // An inline span rather than a clone of whatever was passed: the
|
|
7164
7528
|
// host's trigger keeps its own props, its own ref and its own
|
|
7165
7529
|
// styles, and the click is caught on the way past. `display:
|
|
7166
7530
|
// contents` would lose the rectangle the panel is measured against.
|
|
7167
|
-
/* @__PURE__ */
|
|
7531
|
+
/* @__PURE__ */ jsx39(
|
|
7168
7532
|
"span",
|
|
7169
7533
|
{
|
|
7170
7534
|
ref: triggerRef,
|
|
@@ -7173,7 +7537,7 @@ function Feedback({
|
|
|
7173
7537
|
children
|
|
7174
7538
|
}
|
|
7175
7539
|
),
|
|
7176
|
-
/* @__PURE__ */
|
|
7540
|
+
/* @__PURE__ */ jsx39(
|
|
7177
7541
|
FeedbackPopover,
|
|
7178
7542
|
{
|
|
7179
7543
|
isOpen,
|
|
@@ -7181,7 +7545,7 @@ function Feedback({
|
|
|
7181
7545
|
triggerRef,
|
|
7182
7546
|
...anchor !== void 0 ? { anchor } : {},
|
|
7183
7547
|
width,
|
|
7184
|
-
children: /* @__PURE__ */
|
|
7548
|
+
children: /* @__PURE__ */ jsx39(
|
|
7185
7549
|
FeedbackPanel,
|
|
7186
7550
|
{
|
|
7187
7551
|
onSubmit: note.submit,
|
|
@@ -7204,7 +7568,7 @@ function Feedback({
|
|
|
7204
7568
|
|
|
7205
7569
|
// ../../apps/web/src/components/support-widget/sdk/mount-feedback.tsx
|
|
7206
7570
|
import { createRoot as createRoot2 } from "react-dom/client";
|
|
7207
|
-
import { jsx as
|
|
7571
|
+
import { jsx as jsx40 } from "react/jsx-runtime";
|
|
7208
7572
|
function mountMedianFeedback(options) {
|
|
7209
7573
|
if (typeof document === "undefined") {
|
|
7210
7574
|
console.error(
|
|
@@ -7221,7 +7585,7 @@ function mountMedianFeedback(options) {
|
|
|
7221
7585
|
let current2 = options;
|
|
7222
7586
|
let mounted = true;
|
|
7223
7587
|
const render = () => {
|
|
7224
|
-
root.render(/* @__PURE__ */
|
|
7588
|
+
root.render(/* @__PURE__ */ jsx40(MedianFeedback, { ...current2 }));
|
|
7225
7589
|
};
|
|
7226
7590
|
render();
|
|
7227
7591
|
return {
|