@flamingo-stack/openframe-frontend-core 0.0.731 → 0.0.733
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-RAHRDJBP.cjs → chunk-3HPB4H4C.cjs} +4 -4
- package/dist/{chunk-2UNQJVYN.cjs → chunk-3KGICRH7.cjs} +1457 -1187
- package/dist/{chunk-A4HNF4MP.cjs → chunk-3UTPZW36.cjs} +89 -89
- package/dist/{chunk-GID62YEN.cjs → chunk-AAFW4STC.cjs} +3 -3
- package/dist/{chunk-XDBHGWFH.cjs → chunk-ATMBJBOI.cjs} +16 -16
- package/dist/{chunk-YDGBRI3Y.cjs → chunk-AV5533DH.cjs} +15 -15
- package/dist/{chunk-BFHLGEJK.cjs → chunk-BP6R5WDW.cjs} +63 -60
- package/dist/{chunk-CLILWI6O.cjs → chunk-CJVAA7KL.cjs} +32 -32
- package/dist/{chunk-YJFN2W7A.cjs → chunk-DUVOQHQI.cjs} +7 -7
- package/dist/{chunk-E3N24573.cjs → chunk-DUXLZPMJ.cjs} +9 -9
- package/dist/{chunk-TH4N726A.cjs → chunk-E26I4XH6.cjs} +17 -17
- package/dist/{chunk-Y4QRK3CB.cjs → chunk-EMG3T55N.cjs} +7 -7
- package/dist/{chunk-JK75ZZP3.cjs → chunk-EQORT7NK.cjs} +59 -59
- package/dist/chunk-FCGLSWKR.cjs +417 -0
- package/dist/{chunk-MANNIJ42.cjs → chunk-FICJS5OA.cjs} +6 -0
- package/dist/{chunk-QP6QS3YU.cjs → chunk-FNRMDDVN.cjs} +48 -50
- package/dist/{chunk-KLXHCNDC.cjs → chunk-FTTLBMHU.cjs} +3 -3
- package/dist/{chunk-JPZ4Y6X3.cjs → chunk-GB3CHAW7.cjs} +93 -93
- package/dist/{chunk-7DUXR4HL.cjs → chunk-GVTDVS5U.cjs} +3 -3
- package/dist/{chunk-ZV6473Z4.cjs → chunk-HSWHOCZ3.cjs} +20 -20
- package/dist/{chunk-53XZ6MJ5.cjs → chunk-IC4FT3A6.cjs} +28 -28
- package/dist/{chunk-6V4GEE55.cjs → chunk-J7JKPTGO.cjs} +12 -12
- package/dist/{chunk-FKKUQK4C.cjs → chunk-L4ZNR5V7.cjs} +43 -39
- package/dist/{chunk-NYY25425.cjs → chunk-MYBTNOS6.cjs} +2 -2
- package/dist/chunk-NTJE6SM6.cjs +28 -0
- package/dist/{chunk-RBOIGJYF.cjs → chunk-P3R23TOE.cjs} +35 -35
- package/dist/chunk-PX7FY655.cjs +114 -0
- package/dist/{chunk-YUXRIR45.cjs → chunk-SA7LDEVJ.cjs} +98 -50
- package/dist/{chunk-32ENYVFA.cjs → chunk-TIMCHP4X.cjs} +42 -42
- package/dist/{chunk-3SWLL4IM.cjs → chunk-U4T5NLZD.cjs} +8 -8
- package/dist/{chunk-HI7EFAFQ.cjs → chunk-XDWY6HAW.cjs} +28 -28
- package/dist/{chunk-25H2SZH7.cjs → chunk-XY632BCH.cjs} +4 -4
- package/dist/{chunk-HY2KTQSL.cjs → chunk-YIXKH2JO.cjs} +236 -236
- package/dist/{chunk-4YPV4OI4.cjs → chunk-ZBNA6TCW.cjs} +82 -82
- package/dist/{chunk-HLIJ3U2T.cjs → chunk-ZJNYWNCB.cjs} +23 -21
- package/dist/{chunk-HEOD765R.cjs → chunk-ZRYKDN2J.cjs} +32 -379
- package/dist/{cloud-tenants-SC4FNAC2.cjs → cloud-tenants-3GOGR3EN.cjs} +22 -22
- 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 +35 -35
- package/dist/components/chat/embeddable-chat.d.ts +16 -0
- package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
- package/dist/components/chat/embeddable-chat.js +5 -2
- package/dist/components/chat/index.cjs +16 -16
- package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
- package/dist/components/chat/utils/icon-library.js +6 -0
- package/dist/components/contact/index.cjs +23 -23
- package/dist/components/docs/index.cjs +26 -26
- package/dist/components/embeds/index.cjs +23 -23
- package/dist/components/faq/index.cjs +23 -23
- package/dist/components/features/index.cjs +22 -22
- package/dist/components/help-center-pages/index.cjs +138 -138
- package/dist/components/index.cjs +89 -82
- package/dist/components/meeting-scheduler/index.cjs +67 -67
- package/dist/components/navigation/index.cjs +25 -25
- package/dist/components/onboarding-guides/index.cjs +25 -25
- 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 +10 -10
- package/dist/components/tickets/index.cjs +26 -26
- 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 +28 -22
- 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/searchable-select.d.ts +29 -3
- package/dist/components/ui/searchable-select.d.ts.map +1 -1
- package/dist/components/ui/searchable-select.js +101 -45
- 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-POZXTP7X.cjs} +23 -23
- package/dist/{embeddable-chat-VPIG3F7E.cjs → embeddable-chat-I3Y5GCCR.cjs} +96 -93
- package/dist/hooks/index.cjs +9 -9
- 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 +58 -51
- package/dist/{knowledge-4DREGSOZ.cjs → knowledge-AP34IMXN.cjs} +23 -23
- package/dist/{logs-BWXNT2KP.cjs → logs-CEVMIOPW.cjs} +30 -30
- package/dist/{policies-MGFUI23M.cjs → policies-AMBMRCGB.cjs} +26 -26
- package/dist/{remote-session-O6QGXV2N.cjs → remote-session-Z4YZFG5E.cjs} +10 -9
- package/dist/{software-update-7LF7XEYC.cjs → software-update-Z3MWMSHI.cjs} +26 -26
- package/dist/{tickets-board-KNXK747O.cjs → tickets-board-JOSYLOS7.cjs} +13 -13
- package/package.json +1 -1
- package/src/components/agent-identity.tsx +20 -1
- package/src/components/chat/embeddable-chat.tsx +29 -2
- package/src/components/chat/utils/icon-library.tsx +7 -0
- 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/searchable-select.tsx +124 -32
- 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 _chunkNTJE6SM6cjs = require('./chunk-NTJE6SM6.cjs');
|
|
19
18
|
|
|
20
19
|
|
|
21
20
|
var _chunkSKI6NKOEcjs = require('./chunk-SKI6NKOE.cjs');
|
|
@@ -23,21 +22,21 @@ 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 _chunkFCGLSWKRcjs = require('./chunk-FCGLSWKR.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 _chunkFTTLBMHUcjs = require('./chunk-FTTLBMHU.cjs');
|
|
36
34
|
|
|
37
35
|
|
|
36
|
+
var _chunkRUHKTWGBcjs = require('./chunk-RUHKTWGB.cjs');
|
|
38
37
|
|
|
39
38
|
|
|
40
|
-
var
|
|
39
|
+
var _chunkFICJS5OAcjs = require('./chunk-FICJS5OA.cjs');
|
|
41
40
|
|
|
42
41
|
|
|
43
42
|
var _chunkUR4K2NSLcjs = require('./chunk-UR4K2NSL.cjs');
|
|
@@ -66,10 +65,10 @@ function formatTicketRelativeTime(iso) {
|
|
|
66
65
|
if (diffMin < 60) return `${diffMin} min ago`;
|
|
67
66
|
const diffHours = Math.floor(diffMin / 60);
|
|
68
67
|
if (diffHours < 24) return diffHours === 1 ? "1 hour ago" : `${diffHours} hours ago`;
|
|
69
|
-
return
|
|
68
|
+
return _chunkFTTLBMHUcjs.formatDateWithTimezone.call(void 0, date, null, "numeric");
|
|
70
69
|
}
|
|
71
70
|
function formatTicketFullTimestamp(iso) {
|
|
72
|
-
return
|
|
71
|
+
return _chunkFTTLBMHUcjs.formatDateWithTimezone.call(void 0, iso, null, "numericDateTime");
|
|
73
72
|
}
|
|
74
73
|
function formatRelativeTime(timestamp) {
|
|
75
74
|
return formatRelativeTimeFrom(timestamp, /* @__PURE__ */ new Date());
|
|
@@ -95,7 +94,7 @@ function formatRelativeTimeFrom(timestamp, now) {
|
|
|
95
94
|
const weeks = Math.floor(diffInDays / 7);
|
|
96
95
|
return `${weeks}w ago`;
|
|
97
96
|
}
|
|
98
|
-
return
|
|
97
|
+
return _chunkFTTLBMHUcjs.formatDateWithTimezone.call(void 0, targetTime, null, {
|
|
99
98
|
month: "short",
|
|
100
99
|
day: "numeric",
|
|
101
100
|
year: targetTime.getUTCFullYear() !== now.getUTCFullYear() ? "numeric" : void 0
|
|
@@ -107,7 +106,7 @@ function formatAbsoluteDate(timestamp, options = {}) {
|
|
|
107
106
|
console.warn("\u26A0\uFE0F Invalid timestamp in formatAbsoluteDate:", timestamp);
|
|
108
107
|
return "Invalid date";
|
|
109
108
|
}
|
|
110
|
-
return
|
|
109
|
+
return _chunkFTTLBMHUcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
|
|
111
110
|
year: "numeric",
|
|
112
111
|
month: "short",
|
|
113
112
|
day: "numeric",
|
|
@@ -120,7 +119,7 @@ function formatDateTime(timestamp, options = {}) {
|
|
|
120
119
|
console.warn("\u26A0\uFE0F Invalid timestamp in formatDateTime:", timestamp);
|
|
121
120
|
return "Invalid date";
|
|
122
121
|
}
|
|
123
|
-
return
|
|
122
|
+
return _chunkFTTLBMHUcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
|
|
124
123
|
...ZONED_DATE_FIELDS_MEDIUM_DATETIME,
|
|
125
124
|
...options
|
|
126
125
|
});
|
|
@@ -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,13 +281,13 @@ 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": _chunkFCGLSWKRcjs.deriveHoverColor.call(void 0, color),
|
|
285
|
+
"--tag-bg-active": _chunkFCGLSWKRcjs.deriveActiveColor.call(void 0, color),
|
|
286
|
+
color: _chunkFCGLSWKRcjs.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,
|
|
617
|
-
|
|
290
|
+
_chunkFTTLBMHUcjs.Tag,
|
|
618
291
|
{
|
|
619
292
|
label: _nullishCoalesce(label, () => ( config.label)),
|
|
620
293
|
variant: _nullishCoalesce(variant, () => ( config.variant)),
|
|
@@ -657,7 +330,7 @@ function TicketStatusTag({
|
|
|
657
330
|
className: _chunk3ATAYP36cjs.cn.call(void 0,
|
|
658
331
|
// Reuse the tag's variant styling, but split into a label section and a
|
|
659
332
|
// separated chevron section (the common dropdown-button seam).
|
|
660
|
-
|
|
333
|
+
_chunkFTTLBMHUcjs.tagVariants.call(void 0, { variant: _nullishCoalesce(variant, () => ( config.variant)) }),
|
|
661
334
|
"w-fit shrink-0 items-stretch justify-start gap-0 overflow-hidden p-0",
|
|
662
335
|
"disabled:cursor-not-allowed disabled:opacity-60",
|
|
663
336
|
// Custom color: bg/hover/active from the CSS vars set above.
|
|
@@ -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, _chunkNTJE6SM6cjs.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,13 +774,13 @@ 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 = _chunkFCGLSWKRcjs.AGENT_GLYPH_COLOR }) {
|
|
778
|
+
const identity = _chunkFCGLSWKRcjs.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: _chunkFCGLSWKRcjs.AGENT_PICTURE_CLASS }) });
|
|
1108
781
|
}
|
|
1109
|
-
if (_optionalChain([identity, 'optionalAccess',
|
|
1110
|
-
return _react.createElement.call(void 0,
|
|
782
|
+
if (_optionalChain([identity, 'optionalAccess', _16 => _16.name])) {
|
|
783
|
+
return _react.createElement.call(void 0, _chunkFICJS5OAcjs.resolveIcon.call(void 0, identity.name), {
|
|
1111
784
|
className,
|
|
1112
785
|
"aria-hidden": true,
|
|
1113
786
|
color,
|
|
@@ -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;
|
|
@@ -9,24 +9,24 @@ var _chunkII4QMH26cjs = require('./chunk-II4QMH26.cjs');
|
|
|
9
9
|
var _chunkKHXZFLINcjs = require('./chunk-KHXZFLIN.cjs');
|
|
10
10
|
|
|
11
11
|
|
|
12
|
-
var
|
|
13
|
-
require('./chunk-
|
|
14
|
-
require('./chunk-
|
|
15
|
-
require('./chunk-
|
|
12
|
+
var _chunk3KGICRH7cjs = require('./chunk-3KGICRH7.cjs');
|
|
13
|
+
require('./chunk-ZJNYWNCB.cjs');
|
|
14
|
+
require('./chunk-3HPB4H4C.cjs');
|
|
15
|
+
require('./chunk-L4ZNR5V7.cjs');
|
|
16
16
|
require('./chunk-HQQE74RO.cjs');
|
|
17
17
|
require('./chunk-DEY6XXGO.cjs');
|
|
18
|
-
require('./chunk-
|
|
19
|
-
require('./chunk-
|
|
18
|
+
require('./chunk-BP6R5WDW.cjs');
|
|
19
|
+
require('./chunk-AAFW4STC.cjs');
|
|
20
20
|
require('./chunk-24I6RFVU.cjs');
|
|
21
21
|
require('./chunk-A6P6DHEZ.cjs');
|
|
22
22
|
require('./chunk-MZ4KBSH7.cjs');
|
|
23
23
|
require('./chunk-OXJ57643.cjs');
|
|
24
24
|
require('./chunk-YUMFVQIN.cjs');
|
|
25
|
-
require('./chunk-
|
|
26
|
-
require('./chunk-
|
|
27
|
-
require('./chunk-
|
|
25
|
+
require('./chunk-3UTPZW36.cjs');
|
|
26
|
+
require('./chunk-YIXKH2JO.cjs');
|
|
27
|
+
require('./chunk-ZRYKDN2J.cjs');
|
|
28
28
|
require('./chunk-HZJRERJW.cjs');
|
|
29
|
-
require('./chunk-
|
|
29
|
+
require('./chunk-DUXLZPMJ.cjs');
|
|
30
30
|
require('./chunk-MJGX357L.cjs');
|
|
31
31
|
require('./chunk-ZOZR3QI2.cjs');
|
|
32
32
|
require('./chunk-OMV5S5PI.cjs');
|
|
@@ -1816,20 +1816,20 @@ require('./chunk-LMBYZITR.cjs');
|
|
|
1816
1816
|
require('./chunk-TMVC7S2R.cjs');
|
|
1817
1817
|
require('./chunk-IYHH5EIO.cjs');
|
|
1818
1818
|
require('./chunk-XIBCMGBW.cjs');
|
|
1819
|
-
require('./chunk-
|
|
1820
|
-
require('./chunk-
|
|
1821
|
-
require('./chunk-
|
|
1819
|
+
require('./chunk-DUVOQHQI.cjs');
|
|
1820
|
+
require('./chunk-SA7LDEVJ.cjs');
|
|
1821
|
+
require('./chunk-NTJE6SM6.cjs');
|
|
1822
1822
|
require('./chunk-JKX2C3I2.cjs');
|
|
1823
1823
|
require('./chunk-7DNL734S.cjs');
|
|
1824
1824
|
require('./chunk-WWUSFOJ7.cjs');
|
|
1825
1825
|
require('./chunk-SKI6NKOE.cjs');
|
|
1826
1826
|
require('./chunk-EWPR7662.cjs');
|
|
1827
|
-
require('./chunk-
|
|
1828
|
-
require('./chunk-
|
|
1829
|
-
require('./chunk-
|
|
1827
|
+
require('./chunk-J7JKPTGO.cjs');
|
|
1828
|
+
require('./chunk-P3R23TOE.cjs');
|
|
1829
|
+
require('./chunk-FCGLSWKR.cjs');
|
|
1830
1830
|
require('./chunk-YADG5Q7C.cjs');
|
|
1831
|
-
require('./chunk-
|
|
1832
|
-
require('./chunk-
|
|
1831
|
+
require('./chunk-MYBTNOS6.cjs');
|
|
1832
|
+
require('./chunk-FTTLBMHU.cjs');
|
|
1833
1833
|
require('./chunk-S5C3OZCO.cjs');
|
|
1834
1834
|
require('./chunk-32ASZMTV.cjs');
|
|
1835
1835
|
require('./chunk-OOYBIS7D.cjs');
|
|
@@ -1839,10 +1839,10 @@ require('./chunk-ORO54HDF.cjs');
|
|
|
1839
1839
|
require('./chunk-RUHKTWGB.cjs');
|
|
1840
1840
|
require('./chunk-BLH2SFOO.cjs');
|
|
1841
1841
|
require('./chunk-EAY6ZUES.cjs');
|
|
1842
|
-
require('./chunk-
|
|
1842
|
+
require('./chunk-PX7FY655.cjs');
|
|
1843
1843
|
require('./chunk-CW3ML76U.cjs');
|
|
1844
|
-
require('./chunk-
|
|
1845
|
-
require('./chunk-
|
|
1844
|
+
require('./chunk-GVTDVS5U.cjs');
|
|
1845
|
+
require('./chunk-FICJS5OA.cjs');
|
|
1846
1846
|
require('./chunk-VOX4E6AX.cjs');
|
|
1847
1847
|
require('./chunk-UR4K2NSL.cjs');
|
|
1848
1848
|
require('./chunk-UJ7AXHRZ.cjs');
|
|
@@ -1918,7 +1918,7 @@ var getHref = () => "#";
|
|
|
1918
1918
|
function CloudTenantsScreen(_props) {
|
|
1919
1919
|
const cast = _chunkII4QMH26cjs.useProductDemoCast.call(void 0, );
|
|
1920
1920
|
const fixture = _react.useMemo.call(void 0, () => buildCloudTenantsFixture(cast), [cast]);
|
|
1921
|
-
const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
|
|
1921
|
+
const table = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk3KGICRH7cjs.TenantsTableView, { rows: fixture.rows, getHref, now: fixture.now });
|
|
1922
1922
|
return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "h-full bg-ods-bg p-[var(--spacing-system-l)]", children: table });
|
|
1923
1923
|
}
|
|
1924
1924
|
|
|
@@ -47,4 +47,12 @@ export declare function AgentIdentityProvider({ icons, endpoint, enabled, childr
|
|
|
47
47
|
}): import("react").JSX.Element;
|
|
48
48
|
/** The icon the identity of the agent with this slug holds; undefined when none is known. */
|
|
49
49
|
export declare function useAgentIdentityIcon(slug: string | null | undefined): AgentIdentityIcon | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Each agent identity's accent, as a lookup by slug: the hex colour its
|
|
52
|
+
* identity stores, or undefined when it names none (the caller then draws the platform's
|
|
53
|
+
* accent). THE way anything is drawn in an agent's colour: never a colour
|
|
54
|
+
* chosen per agent in a component. A lookup, not one value, because a row of
|
|
55
|
+
* agents (a tab per agent) needs every one of them.
|
|
56
|
+
*/
|
|
57
|
+
export declare function useAgentAccents(): (slug: string | null | undefined) => string | undefined;
|
|
50
58
|
//# sourceMappingURL=agent-identity.d.ts.map
|