@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.
Files changed (149) hide show
  1. package/dist/build/export-map.json +1 -1
  2. package/dist/{chunk-RAHRDJBP.cjs → chunk-3HPB4H4C.cjs} +4 -4
  3. package/dist/{chunk-2UNQJVYN.cjs → chunk-3KGICRH7.cjs} +1457 -1187
  4. package/dist/{chunk-A4HNF4MP.cjs → chunk-3UTPZW36.cjs} +89 -89
  5. package/dist/{chunk-GID62YEN.cjs → chunk-AAFW4STC.cjs} +3 -3
  6. package/dist/{chunk-XDBHGWFH.cjs → chunk-ATMBJBOI.cjs} +16 -16
  7. package/dist/{chunk-YDGBRI3Y.cjs → chunk-AV5533DH.cjs} +15 -15
  8. package/dist/{chunk-BFHLGEJK.cjs → chunk-BP6R5WDW.cjs} +63 -60
  9. package/dist/{chunk-CLILWI6O.cjs → chunk-CJVAA7KL.cjs} +32 -32
  10. package/dist/{chunk-YJFN2W7A.cjs → chunk-DUVOQHQI.cjs} +7 -7
  11. package/dist/{chunk-E3N24573.cjs → chunk-DUXLZPMJ.cjs} +9 -9
  12. package/dist/{chunk-TH4N726A.cjs → chunk-E26I4XH6.cjs} +17 -17
  13. package/dist/{chunk-Y4QRK3CB.cjs → chunk-EMG3T55N.cjs} +7 -7
  14. package/dist/{chunk-JK75ZZP3.cjs → chunk-EQORT7NK.cjs} +59 -59
  15. package/dist/chunk-FCGLSWKR.cjs +417 -0
  16. package/dist/{chunk-MANNIJ42.cjs → chunk-FICJS5OA.cjs} +6 -0
  17. package/dist/{chunk-QP6QS3YU.cjs → chunk-FNRMDDVN.cjs} +48 -50
  18. package/dist/{chunk-KLXHCNDC.cjs → chunk-FTTLBMHU.cjs} +3 -3
  19. package/dist/{chunk-JPZ4Y6X3.cjs → chunk-GB3CHAW7.cjs} +93 -93
  20. package/dist/{chunk-7DUXR4HL.cjs → chunk-GVTDVS5U.cjs} +3 -3
  21. package/dist/{chunk-ZV6473Z4.cjs → chunk-HSWHOCZ3.cjs} +20 -20
  22. package/dist/{chunk-53XZ6MJ5.cjs → chunk-IC4FT3A6.cjs} +28 -28
  23. package/dist/{chunk-6V4GEE55.cjs → chunk-J7JKPTGO.cjs} +12 -12
  24. package/dist/{chunk-FKKUQK4C.cjs → chunk-L4ZNR5V7.cjs} +43 -39
  25. package/dist/{chunk-NYY25425.cjs → chunk-MYBTNOS6.cjs} +2 -2
  26. package/dist/chunk-NTJE6SM6.cjs +28 -0
  27. package/dist/{chunk-RBOIGJYF.cjs → chunk-P3R23TOE.cjs} +35 -35
  28. package/dist/chunk-PX7FY655.cjs +114 -0
  29. package/dist/{chunk-YUXRIR45.cjs → chunk-SA7LDEVJ.cjs} +98 -50
  30. package/dist/{chunk-32ENYVFA.cjs → chunk-TIMCHP4X.cjs} +42 -42
  31. package/dist/{chunk-3SWLL4IM.cjs → chunk-U4T5NLZD.cjs} +8 -8
  32. package/dist/{chunk-HI7EFAFQ.cjs → chunk-XDWY6HAW.cjs} +28 -28
  33. package/dist/{chunk-25H2SZH7.cjs → chunk-XY632BCH.cjs} +4 -4
  34. package/dist/{chunk-HY2KTQSL.cjs → chunk-YIXKH2JO.cjs} +236 -236
  35. package/dist/{chunk-4YPV4OI4.cjs → chunk-ZBNA6TCW.cjs} +82 -82
  36. package/dist/{chunk-HLIJ3U2T.cjs → chunk-ZJNYWNCB.cjs} +23 -21
  37. package/dist/{chunk-HEOD765R.cjs → chunk-ZRYKDN2J.cjs} +32 -379
  38. package/dist/{cloud-tenants-SC4FNAC2.cjs → cloud-tenants-3GOGR3EN.cjs} +22 -22
  39. package/dist/components/agent-identity.d.ts +8 -0
  40. package/dist/components/agent-identity.d.ts.map +1 -1
  41. package/dist/components/agent-identity.js +13 -1
  42. package/dist/components/case-studies/index.cjs +35 -35
  43. package/dist/components/chat/embeddable-chat.d.ts +16 -0
  44. package/dist/components/chat/embeddable-chat.d.ts.map +1 -1
  45. package/dist/components/chat/embeddable-chat.js +5 -2
  46. package/dist/components/chat/index.cjs +16 -16
  47. package/dist/components/chat/utils/icon-library.d.ts.map +1 -1
  48. package/dist/components/chat/utils/icon-library.js +6 -0
  49. package/dist/components/contact/index.cjs +23 -23
  50. package/dist/components/docs/index.cjs +26 -26
  51. package/dist/components/embeds/index.cjs +23 -23
  52. package/dist/components/faq/index.cjs +23 -23
  53. package/dist/components/features/index.cjs +22 -22
  54. package/dist/components/help-center-pages/index.cjs +138 -138
  55. package/dist/components/index.cjs +89 -82
  56. package/dist/components/meeting-scheduler/index.cjs +67 -67
  57. package/dist/components/navigation/index.cjs +25 -25
  58. package/dist/components/onboarding-guides/index.cjs +25 -25
  59. package/dist/components/product-demo/index.cjs +8 -8
  60. package/dist/components/product-demo/screens/remote-desktop-picture.d.ts.map +1 -1
  61. package/dist/components/product-demo/screens/remote-desktop-picture.js +2 -1
  62. package/dist/components/related-content/index.cjs +10 -10
  63. package/dist/components/tickets/index.cjs +26 -26
  64. package/dist/components/ui/device-wallpaper.d.ts +7 -0
  65. package/dist/components/ui/device-wallpaper.d.ts.map +1 -0
  66. package/dist/components/ui/device-wallpaper.js +5 -0
  67. package/dist/components/ui/feature-list.d.ts +9 -4
  68. package/dist/components/ui/feature-list.d.ts.map +1 -1
  69. package/dist/components/ui/feature-list.js +26 -35
  70. package/dist/components/ui/index.cjs +28 -22
  71. package/dist/components/ui/index.d.ts +3 -1
  72. package/dist/components/ui/index.d.ts.map +1 -1
  73. package/dist/components/ui/index.js +3 -1
  74. package/dist/components/ui/notification-stack.d.ts +33 -0
  75. package/dist/components/ui/notification-stack.d.ts.map +1 -0
  76. package/dist/components/ui/notification-stack.js +78 -0
  77. package/dist/components/ui/numbered-step.d.ts +29 -0
  78. package/dist/components/ui/numbered-step.d.ts.map +1 -0
  79. package/dist/components/ui/numbered-step.js +57 -0
  80. package/dist/components/ui/phone-frame.d.ts +14 -9
  81. package/dist/components/ui/phone-frame.d.ts.map +1 -1
  82. package/dist/components/ui/phone-frame.js +50 -6
  83. package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts +5 -0
  84. package/dist/components/ui/phone-glyphs/lock-camera-glyph.d.ts.map +1 -0
  85. package/dist/components/ui/phone-glyphs/lock-camera-glyph.js +14 -0
  86. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts +5 -0
  87. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.d.ts.map +1 -0
  88. package/dist/components/ui/phone-glyphs/lock-flashlight-glyph.js +14 -0
  89. package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts +5 -0
  90. package/dist/components/ui/phone-glyphs/status-bar-glyphs.d.ts.map +1 -0
  91. package/dist/components/ui/phone-glyphs/status-bar-glyphs.js +68 -0
  92. package/dist/components/ui/searchable-select.d.ts +29 -3
  93. package/dist/components/ui/searchable-select.d.ts.map +1 -1
  94. package/dist/components/ui/searchable-select.js +101 -45
  95. package/dist/components/ui/snap-carousel.d.ts +5 -8
  96. package/dist/components/ui/snap-carousel.d.ts.map +1 -1
  97. package/dist/components/ui/snap-carousel.js +2 -27
  98. package/dist/components/ui/tab-navigation.d.ts +8 -1
  99. package/dist/components/ui/tab-navigation.d.ts.map +1 -1
  100. package/dist/components/ui/tab-navigation.js +30 -20
  101. package/dist/{devices-7MHSJNXS.cjs → devices-POZXTP7X.cjs} +23 -23
  102. package/dist/{embeddable-chat-VPIG3F7E.cjs → embeddable-chat-I3Y5GCCR.cjs} +96 -93
  103. package/dist/hooks/index.cjs +9 -9
  104. package/dist/hooks/ui/use-autoplay.d.ts +50 -13
  105. package/dist/hooks/ui/use-autoplay.d.ts.map +1 -1
  106. package/dist/hooks/ui/use-autoplay.js +76 -13
  107. package/dist/hooks/ui/use-in-view.d.ts +8 -0
  108. package/dist/hooks/ui/use-in-view.d.ts.map +1 -1
  109. package/dist/hooks/ui/use-in-view.js +21 -36
  110. package/dist/hooks/use-agent-identities.d.ts +6 -0
  111. package/dist/hooks/use-agent-identities.d.ts.map +1 -1
  112. package/dist/hooks/use-scenario-player.d.ts +26 -9
  113. package/dist/hooks/use-scenario-player.d.ts.map +1 -1
  114. package/dist/hooks/use-scenario-player.js +12 -9
  115. package/dist/index.cjs +58 -51
  116. package/dist/{knowledge-4DREGSOZ.cjs → knowledge-AP34IMXN.cjs} +23 -23
  117. package/dist/{logs-BWXNT2KP.cjs → logs-CEVMIOPW.cjs} +30 -30
  118. package/dist/{policies-MGFUI23M.cjs → policies-AMBMRCGB.cjs} +26 -26
  119. package/dist/{remote-session-O6QGXV2N.cjs → remote-session-Z4YZFG5E.cjs} +10 -9
  120. package/dist/{software-update-7LF7XEYC.cjs → software-update-Z3MWMSHI.cjs} +26 -26
  121. package/dist/{tickets-board-KNXK747O.cjs → tickets-board-JOSYLOS7.cjs} +13 -13
  122. package/package.json +1 -1
  123. package/src/components/agent-identity.tsx +20 -1
  124. package/src/components/chat/embeddable-chat.tsx +29 -2
  125. package/src/components/chat/utils/icon-library.tsx +7 -0
  126. package/src/components/product-demo/screens/remote-desktop-picture.tsx +2 -1
  127. package/src/components/ui/device-wallpaper.ts +7 -0
  128. package/src/components/ui/feature-list.tsx +24 -30
  129. package/src/components/ui/index.ts +3 -1
  130. package/src/components/ui/notification-stack.tsx +133 -0
  131. package/src/components/ui/numbered-step.tsx +81 -0
  132. package/src/components/ui/phone-frame.tsx +83 -19
  133. package/src/components/ui/phone-glyphs/lock-camera-glyph.tsx +14 -0
  134. package/src/components/ui/phone-glyphs/lock-flashlight-glyph.tsx +14 -0
  135. package/src/components/ui/phone-glyphs/status-bar-glyphs.tsx +45 -0
  136. package/src/components/ui/searchable-select.tsx +124 -32
  137. package/src/components/ui/snap-carousel.tsx +6 -38
  138. package/src/components/ui/tab-navigation.tsx +49 -21
  139. package/src/hooks/ui/use-autoplay.ts +144 -27
  140. package/src/hooks/ui/use-in-view.ts +31 -38
  141. package/src/hooks/use-agent-identities.ts +6 -0
  142. package/src/hooks/use-scenario-player.ts +44 -20
  143. package/dist/chunk-2WXLQ5R5.cjs +0 -99
  144. package/dist/chunk-BE2WAMG5.cjs +0 -54
  145. package/dist/chunk-LCTDHLDL.cjs +0 -43
  146. package/dist/components/ui/playback-toggle.d.ts +0 -24
  147. package/dist/components/ui/playback-toggle.d.ts.map +0 -1
  148. package/dist/components/ui/playback-toggle.js +0 -32
  149. 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 _chunkMANNIJ42cjs = require('./chunk-MANNIJ42.cjs');
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 _chunkKLXHCNDCcjs.formatDateWithTimezone.call(void 0, date, null, "numeric");
68
+ return _chunkFTTLBMHUcjs.formatDateWithTimezone.call(void 0, date, null, "numeric");
70
69
  }
71
70
  function formatTicketFullTimestamp(iso) {
72
- return _chunkKLXHCNDCcjs.formatDateWithTimezone.call(void 0, iso, null, "numericDateTime");
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 _chunkKLXHCNDCcjs.formatDateWithTimezone.call(void 0, targetTime, null, {
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 _chunkKLXHCNDCcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
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 _chunkKLXHCNDCcjs.formatDateWithTimezone.call(void 0, targetTime, _nullishCoalesce(options.timeZone, () => ( null)), {
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
- _chunkKLXHCNDCcjs.Tag,
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
- _chunkKLXHCNDCcjs.tagVariants.call(void 0, { variant: _nullishCoalesce(variant, () => ( config.variant)) }),
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 (e2) {
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 (e3) {
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 (e4) {
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', _2 => _2.status]) === "done" ? execution.result : void 0;
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, _chunk2WXLQ5R5cjs.ToolIcon, { toolType, size: 16 }) }),
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', _3 => _3.toolExplanation, 'optionalAccess', _4 => _4.trim, 'call', _5 => _5()])).filter((s) => !!s);
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', _6 => _6(data.approvalRequestId)]);
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', _7 => _7(data.approvalRequestId)]);
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', _8 => _8.toolExplanation, 'optionalAccess', _9 => _9.trim, 'call', _10 => _10()]) || _optionalChain([c, 'access', _11 => _11.toolTitle, 'optionalAccess', _12 => _12.trim, 'call', _13 => _13()])).filter((s) => !!s);
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', _14 => _14.executions, 'optionalAccess', _15 => _15[call.toolExecutionRequestId]]),
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 = _chunkBE2WAMG5cjs.AGENT_GLYPH_COLOR }) {
1105
- const identity = _chunkBE2WAMG5cjs.useAgentIdentityIcon.call(void 0, agent);
1106
- if (_optionalChain([identity, 'optionalAccess', _16 => _16.url])) {
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: _chunkBE2WAMG5cjs.AGENT_PICTURE_CLASS }) });
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', _17 => _17.name])) {
1110
- return _react.createElement.call(void 0, _chunkMANNIJ42cjs.resolveIcon.call(void 0, identity.name), {
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 _chunk2UNQJVYNcjs = require('./chunk-2UNQJVYN.cjs');
13
- require('./chunk-HLIJ3U2T.cjs');
14
- require('./chunk-RAHRDJBP.cjs');
15
- require('./chunk-FKKUQK4C.cjs');
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-BFHLGEJK.cjs');
19
- require('./chunk-GID62YEN.cjs');
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-A4HNF4MP.cjs');
26
- require('./chunk-HY2KTQSL.cjs');
27
- require('./chunk-HEOD765R.cjs');
25
+ require('./chunk-3UTPZW36.cjs');
26
+ require('./chunk-YIXKH2JO.cjs');
27
+ require('./chunk-ZRYKDN2J.cjs');
28
28
  require('./chunk-HZJRERJW.cjs');
29
- require('./chunk-E3N24573.cjs');
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-YJFN2W7A.cjs');
1820
- require('./chunk-YUXRIR45.cjs');
1821
- require('./chunk-2WXLQ5R5.cjs');
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-6V4GEE55.cjs');
1828
- require('./chunk-RBOIGJYF.cjs');
1829
- require('./chunk-BE2WAMG5.cjs');
1827
+ require('./chunk-J7JKPTGO.cjs');
1828
+ require('./chunk-P3R23TOE.cjs');
1829
+ require('./chunk-FCGLSWKR.cjs');
1830
1830
  require('./chunk-YADG5Q7C.cjs');
1831
- require('./chunk-NYY25425.cjs');
1832
- require('./chunk-KLXHCNDC.cjs');
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-LCTDHLDL.cjs');
1842
+ require('./chunk-PX7FY655.cjs');
1843
1843
  require('./chunk-CW3ML76U.cjs');
1844
- require('./chunk-7DUXR4HL.cjs');
1845
- require('./chunk-MANNIJ42.cjs');
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, _chunk2UNQJVYNcjs.TenantsTableView, { rows: fixture.rows, getHref, now: fixture.now });
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