@flamingo-stack/openframe-frontend-core 0.0.731 → 0.0.732
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/build/export-map.json +1 -1
- package/dist/{chunk-2UNQJVYN.cjs → chunk-22ZK7BA3.cjs} +1221 -1006
- package/dist/{chunk-Y4QRK3CB.cjs → chunk-3BLBWZ6A.cjs} +4 -4
- package/dist/{chunk-ZV6473Z4.cjs → chunk-5HMGK3N6.cjs} +18 -18
- package/dist/{chunk-HI7EFAFQ.cjs → chunk-5HSMTSHU.cjs} +28 -28
- package/dist/{chunk-XDBHGWFH.cjs → chunk-6HHUU56Y.cjs} +16 -16
- package/dist/{chunk-A4HNF4MP.cjs → chunk-6KDGIOLP.cjs} +80 -80
- package/dist/chunk-AEVGCB3Y.cjs +417 -0
- package/dist/{chunk-CLILWI6O.cjs → chunk-BDTX2OEE.cjs} +32 -32
- package/dist/{chunk-YDGBRI3Y.cjs → chunk-BS4EZZCN.cjs} +13 -13
- package/dist/{chunk-JPZ4Y6X3.cjs → chunk-C5NERNE6.cjs} +89 -89
- package/dist/{chunk-YUXRIR45.cjs → chunk-CC3LINHF.cjs} +95 -47
- package/dist/{chunk-53XZ6MJ5.cjs → chunk-CUF3IYIB.cjs} +28 -28
- package/dist/{chunk-FKKUQK4C.cjs → chunk-G37LT2ID.cjs} +5 -1
- package/dist/chunk-HELVKMRG.cjs +28 -0
- package/dist/{chunk-HEOD765R.cjs → chunk-HH4BMYDX.cjs} +23 -370
- package/dist/{chunk-4YPV4OI4.cjs → chunk-I46MQ4R5.cjs} +80 -80
- package/dist/{chunk-RAHRDJBP.cjs → chunk-MEDDKM3A.cjs} +2 -2
- package/dist/{chunk-3SWLL4IM.cjs → chunk-MVZ6XFPK.cjs} +6 -6
- package/dist/{chunk-TH4N726A.cjs → chunk-N466AJGN.cjs} +17 -17
- package/dist/{chunk-QP6QS3YU.cjs → chunk-OI7VCXYU.cjs} +48 -50
- package/dist/{chunk-25H2SZH7.cjs → chunk-OJ3XU3YZ.cjs} +4 -4
- package/dist/{chunk-JK75ZZP3.cjs → chunk-PRWBVIWW.cjs} +43 -43
- package/dist/chunk-PX7FY655.cjs +114 -0
- package/dist/{chunk-HLIJ3U2T.cjs → chunk-QMTC3BK3.cjs} +13 -11
- package/dist/{chunk-YJFN2W7A.cjs → chunk-RIXGLS5Y.cjs} +3 -3
- package/dist/{chunk-BFHLGEJK.cjs → chunk-SJRR745G.cjs} +61 -58
- package/dist/{chunk-6V4GEE55.cjs → chunk-TLDCSTTQ.cjs} +8 -8
- package/dist/{chunk-RBOIGJYF.cjs → chunk-XOQ2UUVS.cjs} +4 -4
- package/dist/{chunk-32ENYVFA.cjs → chunk-YGKVHSNQ.cjs} +42 -42
- package/dist/{chunk-HY2KTQSL.cjs → chunk-ZWMPAFGB.cjs} +183 -183
- package/dist/{cloud-tenants-SC4FNAC2.cjs → cloud-tenants-ILRE74JY.cjs} +16 -16
- package/dist/components/agent-identity.d.ts +8 -0
- package/dist/components/agent-identity.d.ts.map +1 -1
- package/dist/components/agent-identity.js +13 -1
- package/dist/components/case-studies/index.cjs +29 -29
- package/dist/components/chat/index.cjs +11 -11
- package/dist/components/contact/index.cjs +17 -17
- package/dist/components/docs/index.cjs +20 -20
- package/dist/components/embeds/index.cjs +17 -17
- package/dist/components/faq/index.cjs +17 -17
- package/dist/components/features/index.cjs +16 -16
- package/dist/components/help-center-pages/index.cjs +127 -127
- package/dist/components/index.cjs +79 -72
- package/dist/components/meeting-scheduler/index.cjs +47 -47
- package/dist/components/navigation/index.cjs +19 -19
- package/dist/components/onboarding-guides/index.cjs +19 -19
- package/dist/components/product-demo/index.cjs +8 -8
- package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -1
- package/dist/components/product-demo/screens/remote-desktop-picture.js +2 -1
- package/dist/components/related-content/index.cjs +6 -6
- package/dist/components/tickets/index.cjs +20 -20
- package/dist/components/ui/device-wallpaper.d.ts +7 -0
- package/dist/components/ui/device-wallpaper.d.ts.map +1 -0
- package/dist/components/ui/device-wallpaper.js +5 -0
- package/dist/components/ui/feature-list.d.ts +9 -4
- package/dist/components/ui/feature-list.d.ts.map +1 -1
- package/dist/components/ui/feature-list.js +26 -35
- package/dist/components/ui/index.cjs +22 -16
- package/dist/components/ui/index.d.ts +3 -1
- package/dist/components/ui/index.d.ts.map +1 -1
- package/dist/components/ui/index.js +3 -1
- package/dist/components/ui/notification-stack.d.ts +33 -0
- package/dist/components/ui/notification-stack.d.ts.map +1 -0
- package/dist/components/ui/notification-stack.js +78 -0
- package/dist/components/ui/numbered-step.d.ts +29 -0
- package/dist/components/ui/numbered-step.d.ts.map +1 -0
- package/dist/components/ui/numbered-step.js +57 -0
- package/dist/components/ui/phone-frame.d.ts +14 -9
- package/dist/components/ui/phone-frame.d.ts.map +1 -1
- package/dist/components/ui/phone-frame.js +50 -6
- package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts +5 -0
- package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts.map +1 -0
- package/dist/components/ui/phone-glyphs/lock-camera-glyph.js +14 -0
- package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts +5 -0
- package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts.map +1 -0
- package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.js +14 -0
- package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts +5 -0
- package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts.map +1 -0
- package/dist/components/ui/phone-glyphs/status-bar-glyphs.js +68 -0
- package/dist/components/ui/snap-carousel.d.ts +5 -8
- package/dist/components/ui/snap-carousel.d.ts.map +1 -1
- package/dist/components/ui/snap-carousel.js +2 -27
- package/dist/components/ui/tab-navigation.d.ts +8 -1
- package/dist/components/ui/tab-navigation.d.ts.map +1 -1
- package/dist/components/ui/tab-navigation.js +30 -20
- package/dist/{devices-7MHSJNXS.cjs → devices-A6SFNGE4.cjs} +17 -17
- package/dist/{embeddable-chat-VPIG3F7E.cjs → embeddable-chat-BKPYNOIM.cjs} +80 -80
- package/dist/hooks/index.cjs +6 -6
- package/dist/hooks/ui/use-autoplay.d.ts +50 -13
- package/dist/hooks/ui/use-autoplay.d.ts.map +1 -1
- package/dist/hooks/ui/use-autoplay.js +76 -13
- package/dist/hooks/ui/use-in-view.d.ts +8 -0
- package/dist/hooks/ui/use-in-view.d.ts.map +1 -1
- package/dist/hooks/ui/use-in-view.js +21 -36
- package/dist/hooks/use-agent-identities.d.ts +6 -0
- package/dist/hooks/use-agent-identities.d.ts.map +1 -1
- package/dist/hooks/use-scenario-player.d.ts +26 -9
- package/dist/hooks/use-scenario-player.d.ts.map +1 -1
- package/dist/hooks/use-scenario-player.js +12 -9
- package/dist/index.cjs +51 -44
- package/dist/{knowledge-4DREGSOZ.cjs → knowledge-5ZCVKUYV.cjs} +17 -17
- package/dist/{logs-BWXNT2KP.cjs → logs-CL4OJASB.cjs} +24 -24
- package/dist/{policies-MGFUI23M.cjs → policies-7D44ZVS5.cjs} +20 -20
- package/dist/{remote-session-O6QGXV2N.cjs → remote-session-QB3CIZRM.cjs} +5 -4
- package/dist/{software-update-7LF7XEYC.cjs → software-update-AX6TZL26.cjs} +20 -20
- package/dist/{tickets-board-KNXK747O.cjs → tickets-board-7FAV2YWF.cjs} +10 -10
- package/package.json +1 -1
- package/src/components/agent-identity.tsx +20 -1
- package/src/components/product-demo/screens/remote-desktop-picture.tsx +2 -1
- package/src/components/ui/device-wallpaper.ts +7 -0
- package/src/components/ui/feature-list.tsx +24 -30
- package/src/components/ui/index.ts +3 -1
- package/src/components/ui/notification-stack.tsx +133 -0
- package/src/components/ui/numbered-step.tsx +81 -0
- package/src/components/ui/phone-frame.tsx +83 -19
- package/src/components/ui/phone-glyphs/lock-camera-glyph.tsx +14 -0
- package/src/components/ui/phone-glyphs/lock-flashlight-glyph.tsx +14 -0
- package/src/components/ui/phone-glyphs/status-bar-glyphs.tsx +45 -0
- package/src/components/ui/snap-carousel.tsx +6 -38
- package/src/components/ui/tab-navigation.tsx +49 -21
- package/src/hooks/ui/use-autoplay.ts +144 -27
- package/src/hooks/ui/use-in-view.ts +31 -38
- package/src/hooks/use-agent-identities.ts +6 -0
- package/src/hooks/use-scenario-player.ts +44 -20
- package/dist/chunk-2WXLQ5R5.cjs +0 -99
- package/dist/chunk-BE2WAMG5.cjs +0 -54
- package/dist/chunk-LCTDHLDL.cjs +0 -43
- package/dist/components/ui/playback-toggle.d.ts +0 -24
- package/dist/components/ui/playback-toggle.d.ts.map +0 -1
- package/dist/components/ui/playback-toggle.js +0 -32
- package/src/components/ui/playback-toggle.tsx +0 -53
|
@@ -14,8 +14,7 @@ var _chunkC7GIHB3Vcjs = require('./chunk-C7GIHB3V.cjs');
|
|
|
14
14
|
var _chunkHFNBMV5Mcjs = require('./chunk-HFNBMV5M.cjs');
|
|
15
15
|
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
var _chunk2WXLQ5R5cjs = require('./chunk-2WXLQ5R5.cjs');
|
|
17
|
+
var _chunkHELVKMRGcjs = require('./chunk-HELVKMRG.cjs');
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
var _chunkSKI6NKOEcjs = require('./chunk-SKI6NKOE.cjs');
|
|
@@ -23,18 +22,18 @@ var _chunkSKI6NKOEcjs = require('./chunk-SKI6NKOE.cjs');
|
|
|
23
22
|
|
|
24
23
|
|
|
25
24
|
|
|
26
|
-
var _chunkBE2WAMG5cjs = require('./chunk-BE2WAMG5.cjs');
|
|
27
25
|
|
|
28
26
|
|
|
29
27
|
|
|
28
|
+
var _chunkAEVGCB3Ycjs = require('./chunk-AEVGCB3Y.cjs');
|
|
30
29
|
|
|
31
|
-
var _chunkKLXHCNDCcjs = require('./chunk-KLXHCNDC.cjs');
|
|
32
30
|
|
|
33
31
|
|
|
34
|
-
var _chunkRUHKTWGBcjs = require('./chunk-RUHKTWGB.cjs');
|
|
35
32
|
|
|
33
|
+
var _chunkKLXHCNDCcjs = require('./chunk-KLXHCNDC.cjs');
|
|
36
34
|
|
|
37
35
|
|
|
36
|
+
var _chunkRUHKTWGBcjs = require('./chunk-RUHKTWGB.cjs');
|
|
38
37
|
|
|
39
38
|
|
|
40
39
|
var _chunkMANNIJ42cjs = require('./chunk-MANNIJ42.cjs');
|
|
@@ -161,332 +160,6 @@ function createUTCTimestamp() {
|
|
|
161
160
|
return (/* @__PURE__ */ new Date()).toISOString();
|
|
162
161
|
}
|
|
163
162
|
|
|
164
|
-
// src/utils/color-analysis.ts
|
|
165
|
-
var DESIGN_PALETTE = [
|
|
166
|
-
{ name: "yellow", hex: "#FFC008", rgb: [255, 192, 8] },
|
|
167
|
-
{ name: "black", hex: "#161616", rgb: [22, 22, 22] },
|
|
168
|
-
{ name: "gray", hex: "#888888", rgb: [136, 136, 136] }
|
|
169
|
-
];
|
|
170
|
-
function hexToRgb(hex) {
|
|
171
|
-
const normalized = hex.replace(/^#?([a-f\d])([a-f\d])([a-f\d])$/i, (_, r, g, b) => `${r}${r}${g}${g}${b}${b}`);
|
|
172
|
-
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(normalized);
|
|
173
|
-
return result ? [parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)] : [0, 0, 0];
|
|
174
|
-
}
|
|
175
|
-
function getLuminance(rgb) {
|
|
176
|
-
const [r, g, b] = rgb.map((channel) => {
|
|
177
|
-
const c = channel / 255;
|
|
178
|
-
return c <= 0.03928 ? c / 12.92 : Math.pow((c + 0.055) / 1.055, 2.4);
|
|
179
|
-
});
|
|
180
|
-
return 0.2126 * r + 0.7152 * g + 0.0722 * b;
|
|
181
|
-
}
|
|
182
|
-
function getContrastRatio(color1, color2) {
|
|
183
|
-
const lum1 = getLuminance(color1);
|
|
184
|
-
const lum2 = getLuminance(color2);
|
|
185
|
-
const brightest = Math.max(lum1, lum2);
|
|
186
|
-
const darkest = Math.min(lum1, lum2);
|
|
187
|
-
return (brightest + 0.05) / (darkest + 0.05);
|
|
188
|
-
}
|
|
189
|
-
function pickReadableTextColor(bgHex) {
|
|
190
|
-
const bg = hexToRgb(bgHex);
|
|
191
|
-
const darkContrast = getContrastRatio(bg, [26, 26, 26]);
|
|
192
|
-
const lightContrast = getContrastRatio(bg, [250, 250, 250]);
|
|
193
|
-
return darkContrast >= lightContrast ? "dark" : "light";
|
|
194
|
-
}
|
|
195
|
-
function extractDominantColor(canvas) {
|
|
196
|
-
const ctx = canvas.getContext("2d");
|
|
197
|
-
if (!ctx) return [128, 128, 128];
|
|
198
|
-
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
199
|
-
const data = imageData.data;
|
|
200
|
-
const sampleSize = Math.max(1, Math.floor(data.length / (4 * 1e3)));
|
|
201
|
-
const colorCounts = {};
|
|
202
|
-
for (let i = 0; i < data.length; i += 4 * sampleSize) {
|
|
203
|
-
const r = data[i];
|
|
204
|
-
const g = data[i + 1];
|
|
205
|
-
const b = data[i + 2];
|
|
206
|
-
const alpha = data[i + 3];
|
|
207
|
-
if (alpha < 128) continue;
|
|
208
|
-
const bucketR = Math.round(r / 32) * 32;
|
|
209
|
-
const bucketG = Math.round(g / 32) * 32;
|
|
210
|
-
const bucketB = Math.round(b / 32) * 32;
|
|
211
|
-
const key = `${bucketR},${bucketG},${bucketB}`;
|
|
212
|
-
colorCounts[key] = (colorCounts[key] || 0) + 1;
|
|
213
|
-
}
|
|
214
|
-
let maxCount = 0;
|
|
215
|
-
let dominantColor = [128, 128, 128];
|
|
216
|
-
for (const [colorKey, count] of Object.entries(colorCounts)) {
|
|
217
|
-
if (count > maxCount) {
|
|
218
|
-
maxCount = count;
|
|
219
|
-
const [r, g, b] = colorKey.split(",").map(Number);
|
|
220
|
-
dominantColor = [r, g, b];
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
return dominantColor;
|
|
224
|
-
}
|
|
225
|
-
function getBestContrastColor(imageColor) {
|
|
226
|
-
let bestColor = DESIGN_PALETTE[0];
|
|
227
|
-
let bestContrast = 0;
|
|
228
|
-
for (const color of DESIGN_PALETTE) {
|
|
229
|
-
const contrast = getContrastRatio(imageColor, color.rgb);
|
|
230
|
-
if (contrast > bestContrast) {
|
|
231
|
-
bestContrast = contrast;
|
|
232
|
-
bestColor = color;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
return bestContrast >= 3 ? bestColor : DESIGN_PALETTE.find((c) => c.name === "black") || bestColor;
|
|
236
|
-
}
|
|
237
|
-
function analyzeImageColor(imageSrc) {
|
|
238
|
-
return new Promise((resolve, reject) => {
|
|
239
|
-
const img = new Image();
|
|
240
|
-
img.crossOrigin = "anonymous";
|
|
241
|
-
img.onload = () => {
|
|
242
|
-
try {
|
|
243
|
-
const canvas = document.createElement("canvas");
|
|
244
|
-
const ctx = canvas.getContext("2d");
|
|
245
|
-
if (!ctx) {
|
|
246
|
-
reject(new Error("Could not get canvas context"));
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
const maxSize = 100;
|
|
250
|
-
const scale = Math.min(maxSize / img.width, maxSize / img.height);
|
|
251
|
-
canvas.width = img.width * scale;
|
|
252
|
-
canvas.height = img.height * scale;
|
|
253
|
-
ctx.drawImage(img, 0, 0, canvas.width, canvas.height);
|
|
254
|
-
const dominantColor = extractDominantColor(canvas);
|
|
255
|
-
const bestContrastColor = getBestContrastColor(dominantColor);
|
|
256
|
-
resolve(bestContrastColor);
|
|
257
|
-
} catch (error) {
|
|
258
|
-
reject(error);
|
|
259
|
-
}
|
|
260
|
-
};
|
|
261
|
-
img.onerror = () => reject(new Error("Failed to load image"));
|
|
262
|
-
img.src = imageSrc;
|
|
263
|
-
});
|
|
264
|
-
}
|
|
265
|
-
async function extractImageEdgeColorAsync(imageUrl) {
|
|
266
|
-
return new Promise((resolve) => {
|
|
267
|
-
if (typeof window === "undefined") {
|
|
268
|
-
resolve("#000000");
|
|
269
|
-
return;
|
|
270
|
-
}
|
|
271
|
-
const img = new Image();
|
|
272
|
-
img.crossOrigin = "anonymous";
|
|
273
|
-
img.onload = () => {
|
|
274
|
-
try {
|
|
275
|
-
const canvas = document.createElement("canvas");
|
|
276
|
-
const ctx = canvas.getContext("2d");
|
|
277
|
-
if (!ctx) {
|
|
278
|
-
resolve("#000000");
|
|
279
|
-
return;
|
|
280
|
-
}
|
|
281
|
-
const maxSize = 50;
|
|
282
|
-
const scale = Math.min(maxSize / img.naturalWidth, maxSize / img.naturalHeight);
|
|
283
|
-
const w = Math.round(img.naturalWidth * scale);
|
|
284
|
-
const h = Math.round(img.naturalHeight * scale);
|
|
285
|
-
canvas.width = w;
|
|
286
|
-
canvas.height = h;
|
|
287
|
-
ctx.drawImage(img, 0, 0, w, h);
|
|
288
|
-
const data = ctx.getImageData(0, 0, w, h).data;
|
|
289
|
-
const edgeW = Math.max(2, Math.round(w * 0.15));
|
|
290
|
-
const edgeH = Math.max(2, Math.round(h * 0.15));
|
|
291
|
-
const bucketSize = 32;
|
|
292
|
-
const buckets = /* @__PURE__ */ new Map();
|
|
293
|
-
for (let y = 0; y < h; y++) {
|
|
294
|
-
for (let x = 0; x < w; x++) {
|
|
295
|
-
if (!(x < edgeW || x >= w - edgeW || y < edgeH || y >= h - edgeH)) continue;
|
|
296
|
-
const i = (y * w + x) * 4;
|
|
297
|
-
if (data[i + 3] < 128) continue;
|
|
298
|
-
const br = Math.floor(data[i] / bucketSize) * bucketSize;
|
|
299
|
-
const bg = Math.floor(data[i + 1] / bucketSize) * bucketSize;
|
|
300
|
-
const bb = Math.floor(data[i + 2] / bucketSize) * bucketSize;
|
|
301
|
-
const key = `${br},${bg},${bb}`;
|
|
302
|
-
const existing = buckets.get(key);
|
|
303
|
-
if (existing) {
|
|
304
|
-
existing.r += data[i];
|
|
305
|
-
existing.g += data[i + 1];
|
|
306
|
-
existing.b += data[i + 2];
|
|
307
|
-
existing.count++;
|
|
308
|
-
} else {
|
|
309
|
-
buckets.set(key, { r: data[i], g: data[i + 1], b: data[i + 2], count: 1 });
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
}
|
|
313
|
-
let best = { r: 0, g: 0, b: 0, count: 0 };
|
|
314
|
-
for (const b2 of buckets.values()) {
|
|
315
|
-
if (b2.count > best.count) best = b2;
|
|
316
|
-
}
|
|
317
|
-
if (best.count === 0) {
|
|
318
|
-
resolve("#000000");
|
|
319
|
-
return;
|
|
320
|
-
}
|
|
321
|
-
const r = Math.round(best.r / best.count), g = Math.round(best.g / best.count), b = Math.round(best.b / best.count);
|
|
322
|
-
resolve(
|
|
323
|
-
`#${r.toString(16).padStart(2, "0")}${g.toString(16).padStart(2, "0")}${b.toString(16).padStart(2, "0")}`
|
|
324
|
-
);
|
|
325
|
-
} catch (e) {
|
|
326
|
-
resolve("#000000");
|
|
327
|
-
}
|
|
328
|
-
};
|
|
329
|
-
img.onerror = () => resolve("#000000");
|
|
330
|
-
img.src = imageUrl;
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
// src/utils/ods-color-tokens-stub.ts
|
|
335
|
-
var colorTokens = {
|
|
336
|
-
primary: "#FFC008",
|
|
337
|
-
secondary: "#161616",
|
|
338
|
-
background: "#FAFAFA",
|
|
339
|
-
surface: "#FFFFFF",
|
|
340
|
-
text: {
|
|
341
|
-
primary: "#161616",
|
|
342
|
-
secondary: "#666666",
|
|
343
|
-
inverse: "#FFFFFF"
|
|
344
|
-
},
|
|
345
|
-
border: "#E5E5E5"
|
|
346
|
-
};
|
|
347
|
-
|
|
348
|
-
// src/utils/ods-color-utils.ts
|
|
349
|
-
var TOKEN_MAP = colorTokens;
|
|
350
|
-
function lookupToken(tokenKey) {
|
|
351
|
-
const value = TOKEN_MAP[tokenKey];
|
|
352
|
-
return typeof value === "string" ? value : void 0;
|
|
353
|
-
}
|
|
354
|
-
function getODSToken(category, color, variant = "base") {
|
|
355
|
-
const tokenKey = `${category}-${color}-${variant}`;
|
|
356
|
-
return lookupToken(tokenKey);
|
|
357
|
-
}
|
|
358
|
-
function getCurrentPlatform() {
|
|
359
|
-
if (typeof window === "undefined") {
|
|
360
|
-
return process.env.NEXT_PUBLIC_APP_TYPE || "openmsp";
|
|
361
|
-
}
|
|
362
|
-
const domPlatform = document.documentElement.getAttribute("data-app-type");
|
|
363
|
-
if (domPlatform) {
|
|
364
|
-
return domPlatform;
|
|
365
|
-
}
|
|
366
|
-
return process.env.NEXT_PUBLIC_APP_TYPE || "openmsp";
|
|
367
|
-
}
|
|
368
|
-
function switchPlatformTheme(platform) {
|
|
369
|
-
if (typeof window === "undefined") return;
|
|
370
|
-
const root = document.documentElement;
|
|
371
|
-
root.setAttribute("data-app-type", platform);
|
|
372
|
-
window.dispatchEvent(
|
|
373
|
-
new CustomEvent("platformThemeChanged", {
|
|
374
|
-
detail: { platform }
|
|
375
|
-
})
|
|
376
|
-
);
|
|
377
|
-
}
|
|
378
|
-
function getSemanticColor(semanticName, platform) {
|
|
379
|
-
if (typeof window === "undefined") return void 0;
|
|
380
|
-
const currentPlatform = platform || getCurrentPlatform();
|
|
381
|
-
const originalPlatform = getCurrentPlatform();
|
|
382
|
-
if (currentPlatform !== originalPlatform) {
|
|
383
|
-
switchPlatformTheme(currentPlatform);
|
|
384
|
-
}
|
|
385
|
-
const testElement = document.createElement("div");
|
|
386
|
-
document.body.appendChild(testElement);
|
|
387
|
-
const computedStyle = getComputedStyle(testElement);
|
|
388
|
-
const colorValue = computedStyle.getPropertyValue(`--color-${semanticName}`);
|
|
389
|
-
document.body.removeChild(testElement);
|
|
390
|
-
if (currentPlatform !== originalPlatform) {
|
|
391
|
-
switchPlatformTheme(originalPlatform);
|
|
392
|
-
}
|
|
393
|
-
return colorValue.trim() || void 0;
|
|
394
|
-
}
|
|
395
|
-
function getPlatformConfig(platform) {
|
|
396
|
-
const currentPlatform = platform || getCurrentPlatform();
|
|
397
|
-
const isDarkTheme = _chunkMANNIJ42cjs.PLATFORM_THEME === "dark";
|
|
398
|
-
return {
|
|
399
|
-
platform: currentPlatform,
|
|
400
|
-
accentColor: _chunkMANNIJ42cjs.getPlatformAccentColor.call(void 0, currentPlatform),
|
|
401
|
-
isDarkTheme,
|
|
402
|
-
isLightTheme: !isDarkTheme,
|
|
403
|
-
brandName: _chunkMANNIJ42cjs.getPlatformDisplayName.call(void 0, currentPlatform)
|
|
404
|
-
};
|
|
405
|
-
}
|
|
406
|
-
function usePlatformColors(platform) {
|
|
407
|
-
const currentPlatform = platform || getCurrentPlatform();
|
|
408
|
-
const config = getPlatformConfig(currentPlatform);
|
|
409
|
-
return {
|
|
410
|
-
platform: currentPlatform,
|
|
411
|
-
accentColor: config.accentColor,
|
|
412
|
-
isDarkTheme: config.isDarkTheme,
|
|
413
|
-
isLightTheme: config.isLightTheme,
|
|
414
|
-
brandName: config.brandName,
|
|
415
|
-
getToken: (category, color, variant) => getODSToken(category, color, variant),
|
|
416
|
-
switchTheme: (newPlatform) => switchPlatformTheme(newPlatform),
|
|
417
|
-
getSemanticColor: (semanticName) => getSemanticColor(semanticName, currentPlatform)
|
|
418
|
-
};
|
|
419
|
-
}
|
|
420
|
-
function getReadableTextColor(hex) {
|
|
421
|
-
return pickReadableTextColor(hex) === "dark" ? "#212121" : "#fafafa";
|
|
422
|
-
}
|
|
423
|
-
var HEX_PATTERN = /^#[0-9a-fA-F]{6}$/;
|
|
424
|
-
function hexToRgb2(hex) {
|
|
425
|
-
if (!HEX_PATTERN.test(hex)) return null;
|
|
426
|
-
const n = Number.parseInt(hex.slice(1), 16);
|
|
427
|
-
return { r: n >> 16 & 255, g: n >> 8 & 255, b: n & 255 };
|
|
428
|
-
}
|
|
429
|
-
function rgbToHex(r, g, b) {
|
|
430
|
-
const to = (n) => _chunk2WXLQ5R5cjs.clamp.call(void 0, Math.round(n), 0, 255).toString(16).padStart(2, "0");
|
|
431
|
-
return `#${to(r)}${to(g)}${to(b)}`;
|
|
432
|
-
}
|
|
433
|
-
var HOVER_DARKEN_STEP = 10;
|
|
434
|
-
var ACTIVE_DARKEN_STEP = 20;
|
|
435
|
-
function darkenByStep(hex, step) {
|
|
436
|
-
const rgb = hexToRgb2(hex);
|
|
437
|
-
if (!rgb) return hex;
|
|
438
|
-
return rgbToHex(rgb.r - step, rgb.g - step, rgb.b - step);
|
|
439
|
-
}
|
|
440
|
-
function deriveHoverColor(hex) {
|
|
441
|
-
return darkenByStep(hex, HOVER_DARKEN_STEP);
|
|
442
|
-
}
|
|
443
|
-
function deriveActiveColor(hex) {
|
|
444
|
-
return darkenByStep(hex, ACTIVE_DARKEN_STEP);
|
|
445
|
-
}
|
|
446
|
-
function rgbToHsl(r, g, b) {
|
|
447
|
-
const rn = r / 255;
|
|
448
|
-
const gn = g / 255;
|
|
449
|
-
const bn = b / 255;
|
|
450
|
-
const max = Math.max(rn, gn, bn);
|
|
451
|
-
const min = Math.min(rn, gn, bn);
|
|
452
|
-
const l = (max + min) / 2;
|
|
453
|
-
if (max === min) return { h: 0, s: 0, l: Math.round(l * 100) };
|
|
454
|
-
const d = max - min;
|
|
455
|
-
const s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
|
|
456
|
-
let h;
|
|
457
|
-
if (max === rn) h = (gn - bn) / d + (gn < bn ? 6 : 0);
|
|
458
|
-
else if (max === gn) h = (bn - rn) / d + 2;
|
|
459
|
-
else h = (rn - gn) / d + 4;
|
|
460
|
-
h *= 60;
|
|
461
|
-
return { h: Math.round(h), s: Math.round(s * 100), l: Math.round(l * 100) };
|
|
462
|
-
}
|
|
463
|
-
function hslToRgb(h, s, l) {
|
|
464
|
-
const sn = _chunk2WXLQ5R5cjs.clamp.call(void 0, s, 0, 100) / 100;
|
|
465
|
-
const ln = _chunk2WXLQ5R5cjs.clamp.call(void 0, l, 0, 100) / 100;
|
|
466
|
-
const hn = (h % 360 + 360) % 360;
|
|
467
|
-
if (sn === 0) {
|
|
468
|
-
const v = Math.round(ln * 255);
|
|
469
|
-
return { r: v, g: v, b: v };
|
|
470
|
-
}
|
|
471
|
-
const q = ln < 0.5 ? ln * (1 + sn) : ln + sn - ln * sn;
|
|
472
|
-
const p = 2 * ln - q;
|
|
473
|
-
const hue2rgb = (t) => {
|
|
474
|
-
let tn = t;
|
|
475
|
-
if (tn < 0) tn += 1;
|
|
476
|
-
if (tn > 1) tn -= 1;
|
|
477
|
-
if (tn < 1 / 6) return p + (q - p) * 6 * tn;
|
|
478
|
-
if (tn < 1 / 2) return q;
|
|
479
|
-
if (tn < 2 / 3) return p + (q - p) * (2 / 3 - tn) * 6;
|
|
480
|
-
return p;
|
|
481
|
-
};
|
|
482
|
-
const hk = hn / 360;
|
|
483
|
-
return {
|
|
484
|
-
r: Math.round(hue2rgb(hk + 1 / 3) * 255),
|
|
485
|
-
g: Math.round(hue2rgb(hk) * 255),
|
|
486
|
-
b: Math.round(hue2rgb(hk - 1 / 3) * 255)
|
|
487
|
-
};
|
|
488
|
-
}
|
|
489
|
-
|
|
490
163
|
// src/components/ui/color-swatch.tsx
|
|
491
164
|
var _jsxruntime = require('react/jsx-runtime');
|
|
492
165
|
function ColorSwatch({ color, className }) {
|
|
@@ -608,9 +281,9 @@ function TicketStatusTag({
|
|
|
608
281
|
const config = getTicketStatusConfig(status);
|
|
609
282
|
const customStyle = color ? {
|
|
610
283
|
"--tag-bg": color,
|
|
611
|
-
"--tag-bg-hover": deriveHoverColor(color),
|
|
612
|
-
"--tag-bg-active": deriveActiveColor(color),
|
|
613
|
-
color: getReadableTextColor(color)
|
|
284
|
+
"--tag-bg-hover": _chunkAEVGCB3Ycjs.deriveHoverColor.call(void 0, color),
|
|
285
|
+
"--tag-bg-active": _chunkAEVGCB3Ycjs.deriveActiveColor.call(void 0, color),
|
|
286
|
+
color: _chunkAEVGCB3Ycjs.getReadableTextColor.call(void 0, color)
|
|
614
287
|
} : void 0;
|
|
615
288
|
const customColorClasses = color ? "bg-[var(--tag-bg)] hover:bg-[var(--tag-bg-hover)] active:bg-[var(--tag-bg-active)]" : void 0;
|
|
616
289
|
const tag = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
@@ -808,7 +481,7 @@ function expandJson(value, indent) {
|
|
|
808
481
|
function expandedJsonStringify(value) {
|
|
809
482
|
try {
|
|
810
483
|
return expandJson(value, 0);
|
|
811
|
-
} catch (
|
|
484
|
+
} catch (e) {
|
|
812
485
|
return String(value);
|
|
813
486
|
}
|
|
814
487
|
}
|
|
@@ -822,7 +495,7 @@ function formatToolArgValue(value) {
|
|
|
822
495
|
if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
823
496
|
try {
|
|
824
497
|
return { kind: "block", text: expandedJsonStringify(JSON.parse(trimmed)), language: "json" };
|
|
825
|
-
} catch (
|
|
498
|
+
} catch (e2) {
|
|
826
499
|
}
|
|
827
500
|
}
|
|
828
501
|
if (value.includes("\n") || value.length > INLINE_STRING_MAX) {
|
|
@@ -843,7 +516,7 @@ function formatToolResult(value) {
|
|
|
843
516
|
if (trimmed.startsWith("{") && trimmed.endsWith("}") || trimmed.startsWith("[") && trimmed.endsWith("]")) {
|
|
844
517
|
try {
|
|
845
518
|
return { kind: "block", text: expandedJsonStringify(JSON.parse(trimmed)), language: "json" };
|
|
846
|
-
} catch (
|
|
519
|
+
} catch (e3) {
|
|
847
520
|
}
|
|
848
521
|
}
|
|
849
522
|
if (body.includes("\n") || body.length > INLINE_STRING_MAX) {
|
|
@@ -935,7 +608,7 @@ function ToolCallRow({ call, expanded, onToggle, batchStatus, execution, showExe
|
|
|
935
608
|
const args = getArgEntries(call);
|
|
936
609
|
const toolType = call.toolType || "OPENFRAME";
|
|
937
610
|
const { innerRef, containerStyle } = useCollapsible({ expanded });
|
|
938
|
-
const result = _optionalChain([execution, 'optionalAccess',
|
|
611
|
+
const result = _optionalChain([execution, 'optionalAccess', _ => _.status]) === "done" ? execution.result : void 0;
|
|
939
612
|
const hasExpandableBody = args.length > 0 || typeof result === "string" && result.length > 0;
|
|
940
613
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col items-start border-b border-ods-border bg-ods-card last:border-b-0", children: [
|
|
941
614
|
/* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
|
|
@@ -945,7 +618,7 @@ function ToolCallRow({ call, expanded, onToggle, batchStatus, execution, showExe
|
|
|
945
618
|
onClick: onToggle,
|
|
946
619
|
className: "flex w-full cursor-pointer items-start gap-[var(--spacing-system-xsf)] p-[var(--spacing-system-sf)] text-left",
|
|
947
620
|
children: [
|
|
948
|
-
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
621
|
+
/* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-ods-text-secondary", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkHELVKMRGcjs.ToolIcon, { toolType, size: 16 }) }),
|
|
949
622
|
/* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
950
623
|
"div",
|
|
951
624
|
{
|
|
@@ -991,11 +664,11 @@ var ApprovalBatchMessage = _react.forwardRef.call(void 0,
|
|
|
991
664
|
const [expandedId, setExpandedId] = _react.useState.call(void 0, null);
|
|
992
665
|
const [isProcessing, setIsProcessing] = _react.useState.call(void 0, false);
|
|
993
666
|
const isClient = variant === "client";
|
|
994
|
-
const explanations = data.toolCalls.map((c) => _optionalChain([c, 'access',
|
|
667
|
+
const explanations = data.toolCalls.map((c) => _optionalChain([c, 'access', _2 => _2.toolExplanation, 'optionalAccess', _3 => _3.trim, 'call', _4 => _4()])).filter((s) => !!s);
|
|
995
668
|
const handleApprove = async () => {
|
|
996
669
|
setIsProcessing(true);
|
|
997
670
|
try {
|
|
998
|
-
await _optionalChain([onApprove, 'optionalCall',
|
|
671
|
+
await _optionalChain([onApprove, 'optionalCall', _5 => _5(data.approvalRequestId)]);
|
|
999
672
|
} finally {
|
|
1000
673
|
setIsProcessing(false);
|
|
1001
674
|
}
|
|
@@ -1003,7 +676,7 @@ var ApprovalBatchMessage = _react.forwardRef.call(void 0,
|
|
|
1003
676
|
const handleReject = async () => {
|
|
1004
677
|
setIsProcessing(true);
|
|
1005
678
|
try {
|
|
1006
|
-
await _optionalChain([onReject, 'optionalCall',
|
|
679
|
+
await _optionalChain([onReject, 'optionalCall', _6 => _6(data.approvalRequestId)]);
|
|
1007
680
|
} finally {
|
|
1008
681
|
setIsProcessing(false);
|
|
1009
682
|
}
|
|
@@ -1041,7 +714,7 @@ var ApprovalBatchMessage = _react.forwardRef.call(void 0,
|
|
|
1041
714
|
)
|
|
1042
715
|
] });
|
|
1043
716
|
if (isClient) {
|
|
1044
|
-
const titles = data.toolCalls.map((c) => _optionalChain([c, 'access',
|
|
717
|
+
const titles = data.toolCalls.map((c) => _optionalChain([c, 'access', _7 => _7.toolExplanation, 'optionalAccess', _8 => _8.trim, 'call', _9 => _9()]) || _optionalChain([c, 'access', _10 => _10.toolTitle, 'optionalAccess', _11 => _11.trim, 'call', _12 => _12()])).filter((s) => !!s);
|
|
1045
718
|
return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { ref, className: _chunk3ATAYP36cjs.cn.call(void 0, "mb-[var(--spacing-system-xsf)]", CHAT_BLOCK_CLASS, className), ...props, children: [
|
|
1046
719
|
titles.length > 0 ? titles.map((title, i) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "w-full whitespace-pre-line break-words text-ods-text-primary text-h4", children: title }, i)) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "w-full text-ods-text-primary text-h4", children: "Approval required" }),
|
|
1047
720
|
showFooterActions && status === "pending" && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, ApprovalWaitingLine, {}),
|
|
@@ -1072,7 +745,7 @@ var ApprovalBatchMessage = _react.forwardRef.call(void 0,
|
|
|
1072
745
|
expanded: expandedId === call.toolExecutionRequestId,
|
|
1073
746
|
onToggle: () => setExpandedId((prev) => prev === call.toolExecutionRequestId ? null : call.toolExecutionRequestId),
|
|
1074
747
|
batchStatus: status,
|
|
1075
|
-
execution: _optionalChain([data, 'access',
|
|
748
|
+
execution: _optionalChain([data, 'access', _13 => _13.executions, 'optionalAccess', _14 => _14[call.toolExecutionRequestId]]),
|
|
1076
749
|
showExecutionStatus
|
|
1077
750
|
},
|
|
1078
751
|
call.toolExecutionRequestId
|
|
@@ -1101,12 +774,12 @@ ApprovalBatchMessage.displayName = "ApprovalBatchMessage";
|
|
|
1101
774
|
|
|
1102
775
|
|
|
1103
776
|
var MARK_IMAGE_SIZES = "96px";
|
|
1104
|
-
function AgentMark({ agent, className = "", color =
|
|
1105
|
-
const identity =
|
|
1106
|
-
if (_optionalChain([identity, 'optionalAccess',
|
|
1107
|
-
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: _chunk3ATAYP36cjs.cn.call(void 0, "relative inline-block overflow-hidden rounded-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUR4K2NSLcjs.next_image_default, { src: identity.url, alt: "", fill: true, sizes: MARK_IMAGE_SIZES, className:
|
|
777
|
+
function AgentMark({ agent, className = "", color = _chunkAEVGCB3Ycjs.AGENT_GLYPH_COLOR }) {
|
|
778
|
+
const identity = _chunkAEVGCB3Ycjs.useAgentIdentityIcon.call(void 0, agent);
|
|
779
|
+
if (_optionalChain([identity, 'optionalAccess', _15 => _15.url])) {
|
|
780
|
+
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { "aria-hidden": "true", className: _chunk3ATAYP36cjs.cn.call(void 0, "relative inline-block overflow-hidden rounded-full", className), children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUR4K2NSLcjs.next_image_default, { src: identity.url, alt: "", fill: true, sizes: MARK_IMAGE_SIZES, className: _chunkAEVGCB3Ycjs.AGENT_PICTURE_CLASS }) });
|
|
1108
781
|
}
|
|
1109
|
-
if (_optionalChain([identity, 'optionalAccess',
|
|
782
|
+
if (_optionalChain([identity, 'optionalAccess', _16 => _16.name])) {
|
|
1110
783
|
return _react.createElement.call(void 0, _chunkMANNIJ42cjs.resolveIcon.call(void 0, identity.name), {
|
|
1111
784
|
className,
|
|
1112
785
|
"aria-hidden": true,
|
|
@@ -1161,24 +834,4 @@ function AgentAvatar({ agent, size, className }) {
|
|
|
1161
834
|
|
|
1162
835
|
|
|
1163
836
|
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
|
|
1179
|
-
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
|
|
1184
|
-
exports.formatTicketRelativeTime = formatTicketRelativeTime; exports.formatTicketFullTimestamp = formatTicketFullTimestamp; exports.formatRelativeTime = formatRelativeTime; exports.formatRelativeTimeFrom = formatRelativeTimeFrom; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.DESIGN_PALETTE = DESIGN_PALETTE; exports.getContrastRatio = getContrastRatio; exports.pickReadableTextColor = pickReadableTextColor; exports.extractDominantColor = extractDominantColor; exports.getBestContrastColor = getBestContrastColor; exports.analyzeImageColor = analyzeImageColor; exports.extractImageEdgeColorAsync = extractImageEdgeColorAsync; exports.getCurrentPlatform = getCurrentPlatform; exports.switchPlatformTheme = switchPlatformTheme; exports.getSemanticColor = getSemanticColor; exports.getPlatformConfig = getPlatformConfig; exports.usePlatformColors = usePlatformColors; exports.getReadableTextColor = getReadableTextColor; exports.HEX_PATTERN = HEX_PATTERN; exports.hexToRgb = hexToRgb2; exports.rgbToHex = rgbToHex; exports.deriveHoverColor = deriveHoverColor; exports.deriveActiveColor = deriveActiveColor; exports.rgbToHsl = rgbToHsl; exports.hslToRgb = hslToRgb; exports.ColorSwatch = ColorSwatch; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.kindToCanonicalStatus = kindToCanonicalStatus; exports.usesCanonicalStatusStyle = usesCanonicalStatusStyle; exports.resolveStatusTagProps = resolveStatusTagProps; exports.TicketStatusTag = TicketStatusTag; exports.StatusLine = StatusLine; exports.CHAT_BLOCK_FRAME_CLASS = CHAT_BLOCK_FRAME_CLASS; exports.CHAT_BLOCK_CLASS = CHAT_BLOCK_CLASS; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.COMMAND_BODY_ARG_KEYS = COMMAND_BODY_ARG_KEYS; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.CommandBlock = CommandBlock; exports.ApprovalStatusTag = ApprovalStatusTag; exports.ApprovalWaitingLine = ApprovalWaitingLine; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.AgentMark = AgentMark; exports.AgentAvatar = AgentAvatar;
|
|
837
|
+
exports.formatTicketRelativeTime = formatTicketRelativeTime; exports.formatTicketFullTimestamp = formatTicketFullTimestamp; exports.formatRelativeTime = formatRelativeTime; exports.formatRelativeTimeFrom = formatRelativeTimeFrom; exports.formatAbsoluteDate = formatAbsoluteDate; exports.formatDateTime = formatDateTime; exports.getDetailedTimeDifference = getDetailedTimeDifference; exports.isToday = isToday; exports.isWithinMinutes = isWithinMinutes; exports.createUTCTimestamp = createUTCTimestamp; exports.ColorSwatch = ColorSwatch; exports.resolveTicketStatus = resolveTicketStatus; exports.getTicketStatusConfig = getTicketStatusConfig; exports.getTicketStatusTag = getTicketStatusTag; exports.kindToCanonicalStatus = kindToCanonicalStatus; exports.usesCanonicalStatusStyle = usesCanonicalStatusStyle; exports.resolveStatusTagProps = resolveStatusTagProps; exports.TicketStatusTag = TicketStatusTag; exports.StatusLine = StatusLine; exports.CHAT_BLOCK_FRAME_CLASS = CHAT_BLOCK_FRAME_CLASS; exports.CHAT_BLOCK_CLASS = CHAT_BLOCK_CLASS; exports.ExpandChevron = ExpandChevron; exports.useCollapsible = useCollapsible; exports.COMMAND_BODY_ARG_KEYS = COMMAND_BODY_ARG_KEYS; exports.getCommandText = getCommandText; exports.ArgRow = ArgRow; exports.ResultBlock = ResultBlock; exports.CommandBlock = CommandBlock; exports.ApprovalStatusTag = ApprovalStatusTag; exports.ApprovalWaitingLine = ApprovalWaitingLine; exports.ApprovalBatchMessage = ApprovalBatchMessage; exports.AgentMark = AgentMark; exports.AgentAvatar = AgentAvatar;
|