@iblai/iblai-js 2.27.0 → 2.28.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -11,7 +11,6 @@ import ReactDOM__default from 'react-dom';
11
11
  import { z } from 'zod';
12
12
  import { RemoveScroll } from 'react-remove-scroll';
13
13
  import { skipToken } from '@reduxjs/toolkit/query';
14
- import Link$2 from 'next/link';
15
14
  import { useParams, useSearchParams, useRouter, usePathname } from 'next/navigation';
16
15
  import * as DialogPrimitive from '@radix-ui/react-dialog';
17
16
  import { createDialogScope } from '@radix-ui/react-dialog';
@@ -226,7 +225,7 @@ function useLlmProviderCatalogue({ org, userId, mentorId }) {
226
225
  };
227
226
  }, [rowsByName, rowsByLooseName, rowForModel]);
228
227
  }
229
- const clean$1 = (value) => (value === null || value === void 0 ? void 0 : value.trim()) || undefined;
228
+ const clean$2 = (value) => (value === null || value === void 0 ? void 0 : value.trim()) || undefined;
230
229
  /**
231
230
  * The label to show for a model.
232
231
  *
@@ -243,7 +242,7 @@ const clean$1 = (value) => (value === null || value === void 0 ? void 0 : value.
243
242
  */
244
243
  function useLlmDisplayName({ llmName, llmConfig, org, userId, mentorId, }) {
245
244
  var _a;
246
- const fromConfig = clean$1(llmConfig === null || llmConfig === void 0 ? void 0 : llmConfig.display_name);
245
+ const fromConfig = clean$2(llmConfig === null || llmConfig === void 0 ? void 0 : llmConfig.display_name);
247
246
  const skip = Boolean(fromConfig) || !llmName || !org || !userId || !mentorId;
248
247
  const { data: providers } = useGetLlmsQuery({
249
248
  org: org !== null && org !== void 0 ? org : '',
@@ -258,7 +257,7 @@ function useLlmDisplayName({ llmName, llmConfig, org, userId, mentorId, }) {
258
257
  const wanted = modelKey(llmName);
259
258
  for (const provider of providers) {
260
259
  const match = (_a = provider === null || provider === void 0 ? void 0 : provider.chat_models) === null || _a === void 0 ? void 0 : _a.find((model) => modelKey(model === null || model === void 0 ? void 0 : model.llm_name) === wanted || modelKey(model === null || model === void 0 ? void 0 : model.display_name) === wanted);
261
- const label = clean$1(match === null || match === void 0 ? void 0 : match.display_name);
260
+ const label = clean$2(match === null || match === void 0 ? void 0 : match.display_name);
262
261
  if (label)
263
262
  return label;
264
263
  }
@@ -295,7 +294,7 @@ function useCredentialsSchemaLogos({ org, enabled }) {
295
294
  return useCallback((displayName) => (displayName && logosByDisplayName.get(displayName)) || null, [logosByDisplayName]);
296
295
  }
297
296
 
298
- var _a;
297
+ var _a$1;
299
298
  const dl$1 = dataLayer;
300
299
  /**
301
300
  * Read a named export, tolerating absence. In real ESM a missing export reads
@@ -328,7 +327,7 @@ const pick = (name, fallback) => { var _a; return ((_a = read(name)) !== null &&
328
327
  /** Whether the resolved data-layer actually supports the chat-privacy feature. */
329
328
  const CHAT_PRIVACY_SUPPORTED = !!read('ChatPrivacyModeEnum') && !!read('CHAT_PRIVACY_MODES');
330
329
  const ChatPrivacyModeEnum = read('ChatPrivacyModeEnum');
331
- const CHAT_PRIVACY_MODES = ((_a = read('CHAT_PRIVACY_MODES')) !== null && _a !== void 0 ? _a : []);
330
+ const CHAT_PRIVACY_MODES = ((_a$1 = read('CHAT_PRIVACY_MODES')) !== null && _a$1 !== void 0 ? _a$1 : []);
332
331
  const chatPrivacyApiSlice = read('chatPrivacyApiSlice');
333
332
  const useGetTenantChatPrivacyConfigQuery = pick('useGetTenantChatPrivacyConfigQuery', noopQuery);
334
333
  const useUpdateTenantChatPrivacyConfigMutation = pick('useUpdateTenantChatPrivacyConfigMutation', noopMutation);
@@ -1816,7 +1815,11 @@ var advancedCustomDomain$3 = {
1816
1815
  noProjects: "You have not deployed any apps yet. Deploy one first, then come back to give it a domain.",
1817
1816
  customDomainLabel: "Domain",
1818
1817
  domainHelpPlatform: "Without the scheme or a leading “www.” — for example, app.example.com.",
1819
- domainHelpApp: "Leave this empty and a subdomain will be assigned to the app for you, with no DNS records to set.",
1818
+ domainHelpApp: "A domain you own, without the scheme or a leading “www.” — for example, app.example.com. Leave it empty to use the subdomain above.",
1819
+ subdomainLabel: "Subdomain",
1820
+ subdomainHelp: "Lowercase letters, digits and hyphens, like a username. The app is served at <subdomain>.<the platform’s shared domain>, with no DNS records to set.",
1821
+ oneOfSubdomainOrDomain: "Fill in either the subdomain or a domain you own, not both.",
1822
+ subdomainInvalid: "A subdomain is 1–63 lowercase letters, digits and hyphens, and cannot start or end with a hyphen.",
1820
1823
  cancel: "Cancel",
1821
1824
  save: "Save",
1822
1825
  expandAriaLabel: "Expand domains",
@@ -1838,6 +1841,9 @@ var advancedCustomDomain$3 = {
1838
1841
  copyNameHostAriaLabel: "Copy name/host: {domain}",
1839
1842
  copyValueAriaLabel: "Copy value/target",
1840
1843
  noRecordsYet: "No records yet. Check the domain again to fetch them.",
1844
+ sharedDomainLine: "Runs on our shared domain — nothing to set up.",
1845
+ openSite: "Open {domain}",
1846
+ servesApp: "Serves {app}",
1841
1847
  confirmRemoveTitle: "Remove this domain?",
1842
1848
  confirmDeleteBody: "{domain} will stop signing users in to this organization.",
1843
1849
  confirmDetachBody: "{domain} will stop serving the app, here and at the hosting provider.",
@@ -2295,6 +2301,9 @@ var analyticsAnalyticsFinancialStats$3 = {
2295
2301
  viewTraces: "Traces →",
2296
2302
  costByLLMFooter: "{shown} models · ranked by cost"
2297
2303
  };
2304
+ var agentSettingsLink$3 = {
2305
+ openSettings: "Open settings for {name}"
2306
+ };
2298
2307
  var analyticsAgentScopeLink$3 = {
2299
2308
  scopeToAgent: "View analytics for {name}"
2300
2309
  };
@@ -2516,6 +2525,8 @@ var analyticsAnalyticsTopicsStats$3 = {
2516
2525
  topicsRankedFooter: "{shown} of {total} topics · ranked by message volume"
2517
2526
  };
2518
2527
  var analyticsAnalyticsTranscriptsStats$3 = {
2528
+ conversationFallbackTitle: "Conversation",
2529
+ labelEmail: "Email:",
2519
2530
  anonymous: "Anonymous",
2520
2531
  justNow: "Just now",
2521
2532
  minutesAgo: "{count} min ago",
@@ -2960,6 +2971,7 @@ var careerEducationTab$3 = {
2960
2971
  nothingToShow: "Nothing to show here."
2961
2972
  };
2962
2973
  var chatHistoryChatHistoryTab$3 = {
2974
+ userSentiment: "User Sentiment",
2963
2975
  tabConversations: "Conversations",
2964
2976
  tabExports: "Exports",
2965
2977
  searchAgents: "Search Agents",
@@ -4004,6 +4016,10 @@ var disclaimersTabLabels$3 = {
4004
4016
  }
4005
4017
  };
4006
4018
  var documentSidebar$3 = {
4019
+ relevance: "Relevance {percent}%",
4020
+ relevanceHint: "How closely this passage matched the question",
4021
+ preview: "Preview",
4022
+ openInNewTab: "Open {title} in a new tab",
4007
4023
  retrievedDocuments: "Retrieved Documents"
4008
4024
  };
4009
4025
  var embedTabLabels$3 = {
@@ -4113,6 +4129,12 @@ var historyTabLabels$3 = {
4113
4129
  outOf: "out of 5"
4114
4130
  },
4115
4131
  conversation: {
4132
+ sentiment: {
4133
+ positive: "Positive",
4134
+ neutral: "Neutral",
4135
+ negative: "Negative",
4136
+ userSentiment: "User Sentiment"
4137
+ },
4116
4138
  title: "Conversation",
4117
4139
  anonymous: "Anonymous",
4118
4140
  noResponse: "No response available",
@@ -8793,6 +8815,7 @@ var en = {
8793
8815
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail$3,
8794
8816
  analyticsAnalyticsCourses: analyticsAnalyticsCourses$3,
8795
8817
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats$3,
8818
+ agentSettingsLink: agentSettingsLink$3,
8796
8819
  analyticsAgentScopeLink: analyticsAgentScopeLink$3,
8797
8820
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats$3,
8798
8821
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats$3,
@@ -9344,7 +9367,11 @@ var advancedCustomDomain$2 = {
9344
9367
  noProjects: "Vous n’avez encore déployé aucune application. Déployez-en une, puis revenez lui donner un domaine.",
9345
9368
  customDomainLabel: "Domaine",
9346
9369
  domainHelpPlatform: "Sans le schéma ni un « www. » en tête — par exemple, app.example.com.",
9347
- domainHelpApp: "Laissez ce champ vide et un sous-domaine sera attribué à l’application, sans aucun enregistrement DNS à créer.",
9370
+ domainHelpApp: "Un domaine qui vous appartient, sans le schéma ni un « www. » en tête — par exemple, app.example.com. Laissez ce champ vide pour utiliser le sous-domaine ci-dessus.",
9371
+ subdomainLabel: "Sous-domaine",
9372
+ subdomainHelp: "Lettres minuscules, chiffres et tirets, comme un nom d’utilisateur. L’application est servie à <sous-domaine>.<le domaine partagé de la plateforme>, sans aucun enregistrement DNS à créer.",
9373
+ oneOfSubdomainOrDomain: "Renseignez soit le sous-domaine, soit un domaine qui vous appartient, pas les deux.",
9374
+ subdomainInvalid: "Un sous-domaine compte de 1 à 63 lettres minuscules, chiffres et tirets, et ne peut ni commencer ni finir par un tiret.",
9348
9375
  cancel: "Annuler",
9349
9376
  save: "Enregistrer",
9350
9377
  expandAriaLabel: "Déplier les domaines",
@@ -9366,6 +9393,9 @@ var advancedCustomDomain$2 = {
9366
9393
  copyNameHostAriaLabel: "Copier le nom/hôte : {domain}",
9367
9394
  copyValueAriaLabel: "Copier la valeur/cible",
9368
9395
  noRecordsYet: "Aucun enregistrement pour l’instant. Vérifiez le domaine à nouveau pour les obtenir.",
9396
+ sharedDomainLine: "Fonctionne sur notre domaine partagé — rien à configurer.",
9397
+ openSite: "Ouvrir {domain}",
9398
+ servesApp: "Dessert {app}",
9369
9399
  confirmRemoveTitle: "Supprimer ce domaine ?",
9370
9400
  confirmDeleteBody: "{domain} ne permettra plus de se connecter à cette organisation.",
9371
9401
  confirmDetachBody: "{domain} cessera de servir l’application, ici comme chez l’hébergeur.",
@@ -9823,6 +9853,9 @@ var analyticsAnalyticsFinancialStats$2 = {
9823
9853
  viewTraces: "Traces →",
9824
9854
  costByLLMFooter: "{shown} modèles · classés par coût"
9825
9855
  };
9856
+ var agentSettingsLink$2 = {
9857
+ openSettings: "Ouvrir les paramètres de {name}"
9858
+ };
9826
9859
  var analyticsAgentScopeLink$2 = {
9827
9860
  scopeToAgent: "Voir les analyses de {name}"
9828
9861
  };
@@ -10044,6 +10077,8 @@ var analyticsAnalyticsTopicsStats$2 = {
10044
10077
  topicsRankedFooter: "{shown} sur {total} sujets · classés par volume de messages"
10045
10078
  };
10046
10079
  var analyticsAnalyticsTranscriptsStats$2 = {
10080
+ conversationFallbackTitle: "Conversation",
10081
+ labelEmail: "E-mail :",
10047
10082
  anonymous: "Anonyme",
10048
10083
  justNow: "À l'instant",
10049
10084
  minutesAgo: "Il y a {count} min",
@@ -10488,6 +10523,7 @@ var careerEducationTab$2 = {
10488
10523
  nothingToShow: "Rien à afficher ici."
10489
10524
  };
10490
10525
  var chatHistoryChatHistoryTab$2 = {
10526
+ userSentiment: "Sentiment de l'utilisateur",
10491
10527
  tabConversations: "Conversations",
10492
10528
  tabExports: "Exportations",
10493
10529
  searchAgents: "Rechercher des agents",
@@ -11698,6 +11734,10 @@ var disclaimersTabLabels$2 = {
11698
11734
  }
11699
11735
  };
11700
11736
  var documentSidebar$2 = {
11737
+ relevance: "Pertinence {percent}%",
11738
+ relevanceHint: "Dans quelle mesure ce passage correspond à la question",
11739
+ preview: "Aperçu",
11740
+ openInNewTab: "Ouvrir {title} dans un nouvel onglet",
11701
11741
  retrievedDocuments: "Documents récupérés"
11702
11742
  };
11703
11743
  var embedTabLabels$2 = {
@@ -11807,6 +11847,12 @@ var historyTabLabels$2 = {
11807
11847
  outOf: "sur 5"
11808
11848
  },
11809
11849
  conversation: {
11850
+ sentiment: {
11851
+ positive: "Positif",
11852
+ neutral: "Neutre",
11853
+ negative: "Négatif",
11854
+ userSentiment: "Sentiment de l'utilisateur"
11855
+ },
11810
11856
  title: "Conversation",
11811
11857
  anonymous: "Anonyme",
11812
11858
  noResponse: "Aucune réponse disponible",
@@ -16321,6 +16367,7 @@ var fr = {
16321
16367
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail$2,
16322
16368
  analyticsAnalyticsCourses: analyticsAnalyticsCourses$2,
16323
16369
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats$2,
16370
+ agentSettingsLink: agentSettingsLink$2,
16324
16371
  analyticsAgentScopeLink: analyticsAgentScopeLink$2,
16325
16372
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats$2,
16326
16373
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats$2,
@@ -16872,7 +16919,11 @@ var advancedCustomDomain$1 = {
16872
16919
  noProjects: "Todavía no has desplegado ninguna aplicación. Despliega una primero y vuelve para darle un dominio.",
16873
16920
  customDomainLabel: "Dominio",
16874
16921
  domainHelpPlatform: "Sin el esquema ni un “www.” inicial — por ejemplo, app.example.com.",
16875
- domainHelpApp: "Déjalo vacío y se asignará un subdominio a la aplicación, sin registros DNS que configurar.",
16922
+ domainHelpApp: "Un dominio tuyo, sin el esquema ni un “www.” inicial — por ejemplo, app.example.com. Déjalo vacío para usar el subdominio de arriba.",
16923
+ subdomainLabel: "Subdominio",
16924
+ subdomainHelp: "Letras minúsculas, dígitos y guiones, como un nombre de usuario. La aplicación se sirve en <subdominio>.<el dominio compartido de la plataforma>, sin registros DNS que configurar.",
16925
+ oneOfSubdomainOrDomain: "Rellena el subdominio o un dominio tuyo, no ambos.",
16926
+ subdomainInvalid: "Un subdominio tiene entre 1 y 63 letras minúsculas, dígitos y guiones, y no puede empezar ni terminar con un guion.",
16876
16927
  cancel: "Cancelar",
16877
16928
  save: "Guardar",
16878
16929
  expandAriaLabel: "Expandir dominios",
@@ -16894,6 +16945,9 @@ var advancedCustomDomain$1 = {
16894
16945
  copyNameHostAriaLabel: "Copiar nombre/host: {domain}",
16895
16946
  copyValueAriaLabel: "Copiar valor/destino",
16896
16947
  noRecordsYet: "Aún no hay registros. Comprueba el dominio de nuevo para obtenerlos.",
16948
+ sharedDomainLine: "Funciona en nuestro dominio compartido — no hay nada que configurar.",
16949
+ openSite: "Abrir {domain}",
16950
+ servesApp: "Sirve {app}",
16897
16951
  confirmRemoveTitle: "¿Eliminar este dominio?",
16898
16952
  confirmDeleteBody: "{domain} dejará de permitir el inicio de sesión en esta organización.",
16899
16953
  confirmDetachBody: "{domain} dejará de servir la aplicación, aquí y en el proveedor de alojamiento.",
@@ -17351,6 +17405,9 @@ var analyticsAnalyticsFinancialStats$1 = {
17351
17405
  viewTraces: "Trazas →",
17352
17406
  costByLLMFooter: "{shown} modelos · ordenados por costo"
17353
17407
  };
17408
+ var agentSettingsLink$1 = {
17409
+ openSettings: "Abrir la configuración de {name}"
17410
+ };
17354
17411
  var analyticsAgentScopeLink$1 = {
17355
17412
  scopeToAgent: "Ver analíticas de {name}"
17356
17413
  };
@@ -17572,6 +17629,8 @@ var analyticsAnalyticsTopicsStats$1 = {
17572
17629
  topicsRankedFooter: "{shown} de {total} temas · ordenados por volumen de mensajes"
17573
17630
  };
17574
17631
  var analyticsAnalyticsTranscriptsStats$1 = {
17632
+ conversationFallbackTitle: "Conversación",
17633
+ labelEmail: "Correo electrónico:",
17575
17634
  anonymous: "Anónimo",
17576
17635
  justNow: "Ahora mismo",
17577
17636
  minutesAgo: "Hace {count} min",
@@ -18016,6 +18075,7 @@ var careerEducationTab$1 = {
18016
18075
  nothingToShow: "No hay nada que mostrar aquí."
18017
18076
  };
18018
18077
  var chatHistoryChatHistoryTab$1 = {
18078
+ userSentiment: "Sentimiento del usuario",
18019
18079
  tabConversations: "Conversaciones",
18020
18080
  tabExports: "Exportaciones",
18021
18081
  searchAgents: "Buscar agentes",
@@ -19226,6 +19286,10 @@ var disclaimersTabLabels$1 = {
19226
19286
  }
19227
19287
  };
19228
19288
  var documentSidebar$1 = {
19289
+ relevance: "Relevancia {percent}%",
19290
+ relevanceHint: "Cuánto coincide este fragmento con la pregunta",
19291
+ preview: "Vista previa",
19292
+ openInNewTab: "Abrir {title} en una pestaña nueva",
19229
19293
  retrievedDocuments: "Documentos recuperados"
19230
19294
  };
19231
19295
  var embedTabLabels$1 = {
@@ -19335,6 +19399,12 @@ var historyTabLabels$1 = {
19335
19399
  outOf: "de 5"
19336
19400
  },
19337
19401
  conversation: {
19402
+ sentiment: {
19403
+ positive: "Positivo",
19404
+ neutral: "Neutral",
19405
+ negative: "Negativo",
19406
+ userSentiment: "Sentimiento del usuario"
19407
+ },
19338
19408
  title: "Conversación",
19339
19409
  anonymous: "Anónimo",
19340
19410
  noResponse: "No hay respuesta disponible",
@@ -23849,6 +23919,7 @@ var es = {
23849
23919
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail$1,
23850
23920
  analyticsAnalyticsCourses: analyticsAnalyticsCourses$1,
23851
23921
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats$1,
23922
+ agentSettingsLink: agentSettingsLink$1,
23852
23923
  analyticsAgentScopeLink: analyticsAgentScopeLink$1,
23853
23924
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats$1,
23854
23925
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats$1,
@@ -24400,7 +24471,11 @@ var advancedCustomDomain = {
24400
24471
  noProjects: "你还没有部署任何应用。请先部署一个,然后回来为它设置域名。",
24401
24472
  customDomainLabel: "域名",
24402
24473
  domainHelpPlatform: "不要带协议前缀或开头的“www.”,例如 app.example.com。",
24403
- domainHelpApp: "留空即可自动为该应用分配一个子域名,无需设置任何 DNS 记录。",
24474
+ domainHelpApp: "你拥有的域名,不要带协议前缀或开头的“www.”,例如 app.example.com。留空则使用上方的子域名。",
24475
+ subdomainLabel: "子域名",
24476
+ subdomainHelp: "小写字母、数字和连字符,像用户名一样。应用将通过 <子域名>.<平台的共享域名> 提供服务,无需设置任何 DNS 记录。",
24477
+ oneOfSubdomainOrDomain: "请填写子域名或你拥有的域名,二者只填其一。",
24478
+ subdomainInvalid: "子域名为 1 到 63 个小写字母、数字和连字符,且不能以连字符开头或结尾。",
24404
24479
  cancel: "取消",
24405
24480
  save: "保存",
24406
24481
  expandAriaLabel: "展开域名",
@@ -24422,6 +24497,9 @@ var advancedCustomDomain = {
24422
24497
  copyNameHostAriaLabel: "复制名称/主机:{domain}",
24423
24498
  copyValueAriaLabel: "复制值/目标",
24424
24499
  noRecordsYet: "暂无记录。请重新检查该域名以获取记录。",
24500
+ sharedDomainLine: "运行在我们的共享域名上——无需任何设置。",
24501
+ openSite: "打开 {domain}",
24502
+ servesApp: "服务于 {app}",
24425
24503
  confirmRemoveTitle: "要移除这个域名吗?",
24426
24504
  confirmDeleteBody: "{domain} 将不再用于登录该组织。",
24427
24505
  confirmDetachBody: "{domain} 将不再为该应用提供服务,本处和托管服务商处都会解除。",
@@ -24879,6 +24957,9 @@ var analyticsAnalyticsFinancialStats = {
24879
24957
  viewTraces: "追踪 →",
24880
24958
  costByLLMFooter: "{shown} 个模型 · 按成本排序"
24881
24959
  };
24960
+ var agentSettingsLink = {
24961
+ openSettings: "打开 {name} 的设置"
24962
+ };
24882
24963
  var analyticsAgentScopeLink = {
24883
24964
  scopeToAgent: "查看 {name} 的分析"
24884
24965
  };
@@ -25100,6 +25181,8 @@ var analyticsAnalyticsTopicsStats = {
25100
25181
  topicsRankedFooter: "共 {total} 个主题,显示 {shown} 个 · 按消息量排序"
25101
25182
  };
25102
25183
  var analyticsAnalyticsTranscriptsStats = {
25184
+ conversationFallbackTitle: "对话",
25185
+ labelEmail: "邮箱:",
25103
25186
  anonymous: "匿名",
25104
25187
  justNow: "刚刚",
25105
25188
  minutesAgo: "{count} 分钟前",
@@ -25544,6 +25627,7 @@ var careerEducationTab = {
25544
25627
  nothingToShow: "暂无内容。"
25545
25628
  };
25546
25629
  var chatHistoryChatHistoryTab = {
25630
+ userSentiment: "用户情绪",
25547
25631
  tabConversations: "对话",
25548
25632
  tabExports: "导出",
25549
25633
  searchAgents: "搜索代理",
@@ -26754,6 +26838,10 @@ var disclaimersTabLabels = {
26754
26838
  }
26755
26839
  };
26756
26840
  var documentSidebar = {
26841
+ relevance: "相关度 {percent}%",
26842
+ relevanceHint: "该片段与问题的匹配程度",
26843
+ preview: "预览",
26844
+ openInNewTab: "在新标签页中打开 {title}",
26757
26845
  retrievedDocuments: "检索到的文档"
26758
26846
  };
26759
26847
  var embedTabLabels = {
@@ -26863,6 +26951,12 @@ var historyTabLabels = {
26863
26951
  outOf: "满分 5 分"
26864
26952
  },
26865
26953
  conversation: {
26954
+ sentiment: {
26955
+ positive: "积极",
26956
+ neutral: "中性",
26957
+ negative: "消极",
26958
+ userSentiment: "用户情绪"
26959
+ },
26866
26960
  title: "对话",
26867
26961
  anonymous: "匿名",
26868
26962
  noResponse: "暂无回复",
@@ -31377,6 +31471,7 @@ var zh = {
31377
31471
  analyticsAnalyticsCourseDetail: analyticsAnalyticsCourseDetail,
31378
31472
  analyticsAnalyticsCourses: analyticsAnalyticsCourses,
31379
31473
  analyticsAnalyticsFinancialStats: analyticsAnalyticsFinancialStats,
31474
+ agentSettingsLink: agentSettingsLink,
31380
31475
  analyticsAgentScopeLink: analyticsAgentScopeLink,
31381
31476
  analyticsAnalyticsMemoryStats: analyticsAnalyticsMemoryStats,
31382
31477
  analyticsAnalyticsMonetizationStats: analyticsAnalyticsMonetizationStats,
@@ -80085,7 +80180,7 @@ const createLucideIcon = (iconName, iconNode) => {
80085
80180
  */
80086
80181
 
80087
80182
 
80088
- const __iconNode$2t = [
80183
+ const __iconNode$2u = [
80089
80184
  [
80090
80185
  "path",
80091
80186
  {
@@ -80094,7 +80189,7 @@ const __iconNode$2t = [
80094
80189
  }
80095
80190
  ]
80096
80191
  ];
80097
- const Activity = createLucideIcon("activity", __iconNode$2t);
80192
+ const Activity = createLucideIcon("activity", __iconNode$2u);
80098
80193
 
80099
80194
  /**
80100
80195
  * @license lucide-react v0.528.0 - ISC
@@ -80104,12 +80199,12 @@ const Activity = createLucideIcon("activity", __iconNode$2t);
80104
80199
  */
80105
80200
 
80106
80201
 
80107
- const __iconNode$2s = [
80202
+ const __iconNode$2t = [
80108
80203
  ["path", { d: "M17 12H7", key: "16if0g" }],
80109
80204
  ["path", { d: "M19 18H5", key: "18s9l3" }],
80110
80205
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
80111
80206
  ];
80112
- const AlignCenter = createLucideIcon("align-center", __iconNode$2s);
80207
+ const AlignCenter = createLucideIcon("align-center", __iconNode$2t);
80113
80208
 
80114
80209
  /**
80115
80210
  * @license lucide-react v0.528.0 - ISC
@@ -80119,12 +80214,12 @@ const AlignCenter = createLucideIcon("align-center", __iconNode$2s);
80119
80214
  */
80120
80215
 
80121
80216
 
80122
- const __iconNode$2r = [
80217
+ const __iconNode$2s = [
80123
80218
  ["path", { d: "M15 12H3", key: "6jk70r" }],
80124
80219
  ["path", { d: "M17 18H3", key: "1amg6g" }],
80125
80220
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
80126
80221
  ];
80127
- const AlignLeft = createLucideIcon("align-left", __iconNode$2r);
80222
+ const AlignLeft = createLucideIcon("align-left", __iconNode$2s);
80128
80223
 
80129
80224
  /**
80130
80225
  * @license lucide-react v0.528.0 - ISC
@@ -80134,12 +80229,12 @@ const AlignLeft = createLucideIcon("align-left", __iconNode$2r);
80134
80229
  */
80135
80230
 
80136
80231
 
80137
- const __iconNode$2q = [
80232
+ const __iconNode$2r = [
80138
80233
  ["path", { d: "M21 12H9", key: "dn1m92" }],
80139
80234
  ["path", { d: "M21 18H7", key: "1ygte8" }],
80140
80235
  ["path", { d: "M21 6H3", key: "1jwq7v" }]
80141
80236
  ];
80142
- const AlignRight = createLucideIcon("align-right", __iconNode$2q);
80237
+ const AlignRight = createLucideIcon("align-right", __iconNode$2r);
80143
80238
 
80144
80239
  /**
80145
80240
  * @license lucide-react v0.528.0 - ISC
@@ -80149,12 +80244,12 @@ const AlignRight = createLucideIcon("align-right", __iconNode$2q);
80149
80244
  */
80150
80245
 
80151
80246
 
80152
- const __iconNode$2p = [
80247
+ const __iconNode$2q = [
80153
80248
  ["rect", { width: "20", height: "5", x: "2", y: "3", rx: "1", key: "1wp1u1" }],
80154
80249
  ["path", { d: "M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8", key: "1s80jp" }],
80155
80250
  ["path", { d: "M10 12h4", key: "a56b0p" }]
80156
80251
  ];
80157
- const Archive = createLucideIcon("archive", __iconNode$2p);
80252
+ const Archive = createLucideIcon("archive", __iconNode$2q);
80158
80253
 
80159
80254
  /**
80160
80255
  * @license lucide-react v0.528.0 - ISC
@@ -80164,11 +80259,11 @@ const Archive = createLucideIcon("archive", __iconNode$2p);
80164
80259
  */
80165
80260
 
80166
80261
 
80167
- const __iconNode$2o = [
80262
+ const __iconNode$2p = [
80168
80263
  ["path", { d: "M12 5v14", key: "s699le" }],
80169
80264
  ["path", { d: "m19 12-7 7-7-7", key: "1idqje" }]
80170
80265
  ];
80171
- const ArrowDown = createLucideIcon("arrow-down", __iconNode$2o);
80266
+ const ArrowDown = createLucideIcon("arrow-down", __iconNode$2p);
80172
80267
 
80173
80268
  /**
80174
80269
  * @license lucide-react v0.528.0 - ISC
@@ -80178,11 +80273,11 @@ const ArrowDown = createLucideIcon("arrow-down", __iconNode$2o);
80178
80273
  */
80179
80274
 
80180
80275
 
80181
- const __iconNode$2n = [
80276
+ const __iconNode$2o = [
80182
80277
  ["path", { d: "m12 19-7-7 7-7", key: "1l729n" }],
80183
80278
  ["path", { d: "M19 12H5", key: "x3x0zl" }]
80184
80279
  ];
80185
- const ArrowLeft = createLucideIcon("arrow-left", __iconNode$2n);
80280
+ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$2o);
80186
80281
 
80187
80282
  /**
80188
80283
  * @license lucide-react v0.528.0 - ISC
@@ -80192,11 +80287,11 @@ const ArrowLeft = createLucideIcon("arrow-left", __iconNode$2n);
80192
80287
  */
80193
80288
 
80194
80289
 
80195
- const __iconNode$2m = [
80290
+ const __iconNode$2n = [
80196
80291
  ["path", { d: "M5 12h14", key: "1ays0h" }],
80197
80292
  ["path", { d: "m12 5 7 7-7 7", key: "xquz4c" }]
80198
80293
  ];
80199
- const ArrowRight = createLucideIcon("arrow-right", __iconNode$2m);
80294
+ const ArrowRight = createLucideIcon("arrow-right", __iconNode$2n);
80200
80295
 
80201
80296
  /**
80202
80297
  * @license lucide-react v0.528.0 - ISC
@@ -80206,11 +80301,11 @@ const ArrowRight = createLucideIcon("arrow-right", __iconNode$2m);
80206
80301
  */
80207
80302
 
80208
80303
 
80209
- const __iconNode$2l = [
80304
+ const __iconNode$2m = [
80210
80305
  ["path", { d: "m5 12 7-7 7 7", key: "hav0vg" }],
80211
80306
  ["path", { d: "M12 19V5", key: "x0mq9r" }]
80212
80307
  ];
80213
- const ArrowUp = createLucideIcon("arrow-up", __iconNode$2l);
80308
+ const ArrowUp = createLucideIcon("arrow-up", __iconNode$2m);
80214
80309
 
80215
80310
  /**
80216
80311
  * @license lucide-react v0.528.0 - ISC
@@ -80220,7 +80315,7 @@ const ArrowUp = createLucideIcon("arrow-up", __iconNode$2l);
80220
80315
  */
80221
80316
 
80222
80317
 
80223
- const __iconNode$2k = [
80318
+ const __iconNode$2l = [
80224
80319
  [
80225
80320
  "path",
80226
80321
  {
@@ -80230,7 +80325,7 @@ const __iconNode$2k = [
80230
80325
  ],
80231
80326
  ["circle", { cx: "12", cy: "8", r: "6", key: "1vp47v" }]
80232
80327
  ];
80233
- const Award = createLucideIcon("award", __iconNode$2k);
80328
+ const Award = createLucideIcon("award", __iconNode$2l);
80234
80329
 
80235
80330
  /**
80236
80331
  * @license lucide-react v0.528.0 - ISC
@@ -80240,11 +80335,11 @@ const Award = createLucideIcon("award", __iconNode$2k);
80240
80335
  */
80241
80336
 
80242
80337
 
80243
- const __iconNode$2j = [
80338
+ const __iconNode$2k = [
80244
80339
  ["path", { d: "M4.929 4.929 19.07 19.071", key: "196cmz" }],
80245
80340
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
80246
80341
  ];
80247
- const Ban = createLucideIcon("ban", __iconNode$2j);
80342
+ const Ban = createLucideIcon("ban", __iconNode$2k);
80248
80343
 
80249
80344
  /**
80250
80345
  * @license lucide-react v0.528.0 - ISC
@@ -80254,12 +80349,12 @@ const Ban = createLucideIcon("ban", __iconNode$2j);
80254
80349
  */
80255
80350
 
80256
80351
 
80257
- const __iconNode$2i = [
80352
+ const __iconNode$2j = [
80258
80353
  ["rect", { width: "20", height: "12", x: "2", y: "6", rx: "2", key: "9lu3g6" }],
80259
80354
  ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }],
80260
80355
  ["path", { d: "M6 12h.01M18 12h.01", key: "113zkx" }]
80261
80356
  ];
80262
- const Banknote = createLucideIcon("banknote", __iconNode$2i);
80357
+ const Banknote = createLucideIcon("banknote", __iconNode$2j);
80263
80358
 
80264
80359
  /**
80265
80360
  * @license lucide-react v0.528.0 - ISC
@@ -80269,7 +80364,7 @@ const Banknote = createLucideIcon("banknote", __iconNode$2i);
80269
80364
  */
80270
80365
 
80271
80366
 
80272
- const __iconNode$2h = [
80367
+ const __iconNode$2i = [
80273
80368
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
80274
80369
  ["path", { d: "M22 8c0-2.3-.8-4.3-2-6", key: "5bb3ad" }],
80275
80370
  [
@@ -80281,7 +80376,7 @@ const __iconNode$2h = [
80281
80376
  ],
80282
80377
  ["path", { d: "M4 2C2.8 3.7 2 5.7 2 8", key: "tap9e0" }]
80283
80378
  ];
80284
- const BellRing = createLucideIcon("bell-ring", __iconNode$2h);
80379
+ const BellRing = createLucideIcon("bell-ring", __iconNode$2i);
80285
80380
 
80286
80381
  /**
80287
80382
  * @license lucide-react v0.528.0 - ISC
@@ -80291,7 +80386,7 @@ const BellRing = createLucideIcon("bell-ring", __iconNode$2h);
80291
80386
  */
80292
80387
 
80293
80388
 
80294
- const __iconNode$2g = [
80389
+ const __iconNode$2h = [
80295
80390
  ["path", { d: "M10.268 21a2 2 0 0 0 3.464 0", key: "vwvbt9" }],
80296
80391
  [
80297
80392
  "path",
@@ -80301,7 +80396,7 @@ const __iconNode$2g = [
80301
80396
  }
80302
80397
  ]
80303
80398
  ];
80304
- const Bell = createLucideIcon("bell", __iconNode$2g);
80399
+ const Bell = createLucideIcon("bell", __iconNode$2h);
80305
80400
 
80306
80401
  /**
80307
80402
  * @license lucide-react v0.528.0 - ISC
@@ -80311,13 +80406,13 @@ const Bell = createLucideIcon("bell", __iconNode$2g);
80311
80406
  */
80312
80407
 
80313
80408
 
80314
- const __iconNode$2f = [
80409
+ const __iconNode$2g = [
80315
80410
  [
80316
80411
  "path",
80317
80412
  { d: "M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8", key: "mg9rjx" }
80318
80413
  ]
80319
80414
  ];
80320
- const Bold$1 = createLucideIcon("bold", __iconNode$2f);
80415
+ const Bold$1 = createLucideIcon("bold", __iconNode$2g);
80321
80416
 
80322
80417
  /**
80323
80418
  * @license lucide-react v0.528.0 - ISC
@@ -80327,7 +80422,7 @@ const Bold$1 = createLucideIcon("bold", __iconNode$2f);
80327
80422
  */
80328
80423
 
80329
80424
 
80330
- const __iconNode$2e = [
80425
+ const __iconNode$2f = [
80331
80426
  ["path", { d: "M12 7v14", key: "1akyts" }],
80332
80427
  [
80333
80428
  "path",
@@ -80337,7 +80432,7 @@ const __iconNode$2e = [
80337
80432
  }
80338
80433
  ]
80339
80434
  ];
80340
- const BookOpen = createLucideIcon("book-open", __iconNode$2e);
80435
+ const BookOpen = createLucideIcon("book-open", __iconNode$2f);
80341
80436
 
80342
80437
  /**
80343
80438
  * @license lucide-react v0.528.0 - ISC
@@ -80347,7 +80442,7 @@ const BookOpen = createLucideIcon("book-open", __iconNode$2e);
80347
80442
  */
80348
80443
 
80349
80444
 
80350
- const __iconNode$2d = [
80445
+ const __iconNode$2e = [
80351
80446
  ["path", { d: "M12 8V4H8", key: "hb8ula" }],
80352
80447
  ["rect", { width: "16", height: "12", x: "4", y: "8", rx: "2", key: "enze0r" }],
80353
80448
  ["path", { d: "M2 14h2", key: "vft8re" }],
@@ -80355,7 +80450,7 @@ const __iconNode$2d = [
80355
80450
  ["path", { d: "M15 13v2", key: "1xurst" }],
80356
80451
  ["path", { d: "M9 13v2", key: "rq6x2g" }]
80357
80452
  ];
80358
- const Bot = createLucideIcon("bot", __iconNode$2d);
80453
+ const Bot = createLucideIcon("bot", __iconNode$2e);
80359
80454
 
80360
80455
  /**
80361
80456
  * @license lucide-react v0.528.0 - ISC
@@ -80365,11 +80460,11 @@ const Bot = createLucideIcon("bot", __iconNode$2d);
80365
80460
  */
80366
80461
 
80367
80462
 
80368
- const __iconNode$2c = [
80463
+ const __iconNode$2d = [
80369
80464
  ["path", { d: "M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16", key: "jecpp" }],
80370
80465
  ["rect", { width: "20", height: "14", x: "2", y: "6", rx: "2", key: "i6l2r4" }]
80371
80466
  ];
80372
- const Briefcase = createLucideIcon("briefcase", __iconNode$2c);
80467
+ const Briefcase = createLucideIcon("briefcase", __iconNode$2d);
80373
80468
 
80374
80469
  /**
80375
80470
  * @license lucide-react v0.528.0 - ISC
@@ -80379,7 +80474,7 @@ const Briefcase = createLucideIcon("briefcase", __iconNode$2c);
80379
80474
  */
80380
80475
 
80381
80476
 
80382
- const __iconNode$2b = [
80477
+ const __iconNode$2c = [
80383
80478
  ["path", { d: "M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18Z", key: "1b4qmf" }],
80384
80479
  ["path", { d: "M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2", key: "i71pzd" }],
80385
80480
  ["path", { d: "M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2", key: "10jefs" }],
@@ -80388,7 +80483,7 @@ const __iconNode$2b = [
80388
80483
  ["path", { d: "M10 14h4", key: "kelpxr" }],
80389
80484
  ["path", { d: "M10 18h4", key: "1ulq68" }]
80390
80485
  ];
80391
- const Building2 = createLucideIcon("building-2", __iconNode$2b);
80486
+ const Building2 = createLucideIcon("building-2", __iconNode$2c);
80392
80487
 
80393
80488
  /**
80394
80489
  * @license lucide-react v0.528.0 - ISC
@@ -80398,13 +80493,13 @@ const Building2 = createLucideIcon("building-2", __iconNode$2b);
80398
80493
  */
80399
80494
 
80400
80495
 
80401
- const __iconNode$2a = [
80496
+ const __iconNode$2b = [
80402
80497
  ["path", { d: "M8 2v4", key: "1cmpym" }],
80403
80498
  ["path", { d: "M16 2v4", key: "4m81vk" }],
80404
80499
  ["rect", { width: "18", height: "18", x: "3", y: "4", rx: "2", key: "1hopcy" }],
80405
80500
  ["path", { d: "M3 10h18", key: "8toen8" }]
80406
80501
  ];
80407
- const Calendar$1 = createLucideIcon("calendar", __iconNode$2a);
80502
+ const Calendar$1 = createLucideIcon("calendar", __iconNode$2b);
80408
80503
 
80409
80504
  /**
80410
80505
  * @license lucide-react v0.528.0 - ISC
@@ -80414,7 +80509,7 @@ const Calendar$1 = createLucideIcon("calendar", __iconNode$2a);
80414
80509
  */
80415
80510
 
80416
80511
 
80417
- const __iconNode$29 = [
80512
+ const __iconNode$2a = [
80418
80513
  [
80419
80514
  "path",
80420
80515
  {
@@ -80424,7 +80519,7 @@ const __iconNode$29 = [
80424
80519
  ],
80425
80520
  ["circle", { cx: "12", cy: "13", r: "3", key: "1vg3eu" }]
80426
80521
  ];
80427
- const Camera = createLucideIcon("camera", __iconNode$29);
80522
+ const Camera = createLucideIcon("camera", __iconNode$2a);
80428
80523
 
80429
80524
  /**
80430
80525
  * @license lucide-react v0.528.0 - ISC
@@ -80434,11 +80529,11 @@ const Camera = createLucideIcon("camera", __iconNode$29);
80434
80529
  */
80435
80530
 
80436
80531
 
80437
- const __iconNode$28 = [
80532
+ const __iconNode$29 = [
80438
80533
  ["path", { d: "M18 6 7 17l-5-5", key: "116fxf" }],
80439
80534
  ["path", { d: "m22 10-7.5 7.5L13 16", key: "ke71qq" }]
80440
80535
  ];
80441
- const CheckCheck = createLucideIcon("check-check", __iconNode$28);
80536
+ const CheckCheck = createLucideIcon("check-check", __iconNode$29);
80442
80537
 
80443
80538
  /**
80444
80539
  * @license lucide-react v0.528.0 - ISC
@@ -80448,8 +80543,8 @@ const CheckCheck = createLucideIcon("check-check", __iconNode$28);
80448
80543
  */
80449
80544
 
80450
80545
 
80451
- const __iconNode$27 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
80452
- const Check = createLucideIcon("check", __iconNode$27);
80546
+ const __iconNode$28 = [["path", { d: "M20 6 9 17l-5-5", key: "1gmf2c" }]];
80547
+ const Check = createLucideIcon("check", __iconNode$28);
80453
80548
 
80454
80549
  /**
80455
80550
  * @license lucide-react v0.528.0 - ISC
@@ -80459,8 +80554,8 @@ const Check = createLucideIcon("check", __iconNode$27);
80459
80554
  */
80460
80555
 
80461
80556
 
80462
- const __iconNode$26 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
80463
- const ChevronDown = createLucideIcon("chevron-down", __iconNode$26);
80557
+ const __iconNode$27 = [["path", { d: "m6 9 6 6 6-6", key: "qrunsl" }]];
80558
+ const ChevronDown = createLucideIcon("chevron-down", __iconNode$27);
80464
80559
 
80465
80560
  /**
80466
80561
  * @license lucide-react v0.528.0 - ISC
@@ -80470,11 +80565,11 @@ const ChevronDown = createLucideIcon("chevron-down", __iconNode$26);
80470
80565
  */
80471
80566
 
80472
80567
 
80473
- const __iconNode$25 = [
80568
+ const __iconNode$26 = [
80474
80569
  ["path", { d: "m17 18-6-6 6-6", key: "1yerx2" }],
80475
80570
  ["path", { d: "M7 6v12", key: "1p53r6" }]
80476
80571
  ];
80477
- const ChevronFirst = createLucideIcon("chevron-first", __iconNode$25);
80572
+ const ChevronFirst = createLucideIcon("chevron-first", __iconNode$26);
80478
80573
 
80479
80574
  /**
80480
80575
  * @license lucide-react v0.528.0 - ISC
@@ -80484,11 +80579,11 @@ const ChevronFirst = createLucideIcon("chevron-first", __iconNode$25);
80484
80579
  */
80485
80580
 
80486
80581
 
80487
- const __iconNode$24 = [
80582
+ const __iconNode$25 = [
80488
80583
  ["path", { d: "m7 18 6-6-6-6", key: "lwmzdw" }],
80489
80584
  ["path", { d: "M17 6v12", key: "1o0aio" }]
80490
80585
  ];
80491
- const ChevronLast = createLucideIcon("chevron-last", __iconNode$24);
80586
+ const ChevronLast = createLucideIcon("chevron-last", __iconNode$25);
80492
80587
 
80493
80588
  /**
80494
80589
  * @license lucide-react v0.528.0 - ISC
@@ -80498,8 +80593,8 @@ const ChevronLast = createLucideIcon("chevron-last", __iconNode$24);
80498
80593
  */
80499
80594
 
80500
80595
 
80501
- const __iconNode$23 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
80502
- const ChevronLeft = createLucideIcon("chevron-left", __iconNode$23);
80596
+ const __iconNode$24 = [["path", { d: "m15 18-6-6 6-6", key: "1wnfg3" }]];
80597
+ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$24);
80503
80598
 
80504
80599
  /**
80505
80600
  * @license lucide-react v0.528.0 - ISC
@@ -80509,8 +80604,8 @@ const ChevronLeft = createLucideIcon("chevron-left", __iconNode$23);
80509
80604
  */
80510
80605
 
80511
80606
 
80512
- const __iconNode$22 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
80513
- const ChevronRight = createLucideIcon("chevron-right", __iconNode$22);
80607
+ const __iconNode$23 = [["path", { d: "m9 18 6-6-6-6", key: "mthhwq" }]];
80608
+ const ChevronRight = createLucideIcon("chevron-right", __iconNode$23);
80514
80609
 
80515
80610
  /**
80516
80611
  * @license lucide-react v0.528.0 - ISC
@@ -80520,8 +80615,8 @@ const ChevronRight = createLucideIcon("chevron-right", __iconNode$22);
80520
80615
  */
80521
80616
 
80522
80617
 
80523
- const __iconNode$21 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
80524
- const ChevronUp = createLucideIcon("chevron-up", __iconNode$21);
80618
+ const __iconNode$22 = [["path", { d: "m18 15-6-6-6 6", key: "153udz" }]];
80619
+ const ChevronUp = createLucideIcon("chevron-up", __iconNode$22);
80525
80620
 
80526
80621
  /**
80527
80622
  * @license lucide-react v0.528.0 - ISC
@@ -80531,11 +80626,11 @@ const ChevronUp = createLucideIcon("chevron-up", __iconNode$21);
80531
80626
  */
80532
80627
 
80533
80628
 
80534
- const __iconNode$20 = [
80629
+ const __iconNode$21 = [
80535
80630
  ["path", { d: "m11 17-5-5 5-5", key: "13zhaf" }],
80536
80631
  ["path", { d: "m18 17-5-5 5-5", key: "h8a8et" }]
80537
80632
  ];
80538
- const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$20);
80633
+ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$21);
80539
80634
 
80540
80635
  /**
80541
80636
  * @license lucide-react v0.528.0 - ISC
@@ -80545,11 +80640,11 @@ const ChevronsLeft = createLucideIcon("chevrons-left", __iconNode$20);
80545
80640
  */
80546
80641
 
80547
80642
 
80548
- const __iconNode$1$ = [
80643
+ const __iconNode$20 = [
80549
80644
  ["path", { d: "m6 17 5-5-5-5", key: "xnjwq" }],
80550
80645
  ["path", { d: "m13 17 5-5-5-5", key: "17xmmf" }]
80551
80646
  ];
80552
- const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1$);
80647
+ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$20);
80553
80648
 
80554
80649
  /**
80555
80650
  * @license lucide-react v0.528.0 - ISC
@@ -80559,11 +80654,11 @@ const ChevronsRight = createLucideIcon("chevrons-right", __iconNode$1$);
80559
80654
  */
80560
80655
 
80561
80656
 
80562
- const __iconNode$1_ = [
80657
+ const __iconNode$1$ = [
80563
80658
  ["path", { d: "m7 15 5 5 5-5", key: "1hf1tw" }],
80564
80659
  ["path", { d: "m7 9 5-5 5 5", key: "sgt6xg" }]
80565
80660
  ];
80566
- const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1_);
80661
+ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1$);
80567
80662
 
80568
80663
  /**
80569
80664
  * @license lucide-react v0.528.0 - ISC
@@ -80573,12 +80668,12 @@ const ChevronsUpDown = createLucideIcon("chevrons-up-down", __iconNode$1_);
80573
80668
  */
80574
80669
 
80575
80670
 
80576
- const __iconNode$1Z = [
80671
+ const __iconNode$1_ = [
80577
80672
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
80578
80673
  ["line", { x1: "12", x2: "12", y1: "8", y2: "12", key: "1pkeuh" }],
80579
80674
  ["line", { x1: "12", x2: "12.01", y1: "16", y2: "16", key: "4dfq90" }]
80580
80675
  ];
80581
- const CircleAlert = createLucideIcon("circle-alert", __iconNode$1Z);
80676
+ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1_);
80582
80677
 
80583
80678
  /**
80584
80679
  * @license lucide-react v0.528.0 - ISC
@@ -80588,11 +80683,11 @@ const CircleAlert = createLucideIcon("circle-alert", __iconNode$1Z);
80588
80683
  */
80589
80684
 
80590
80685
 
80591
- const __iconNode$1Y = [
80686
+ const __iconNode$1Z = [
80592
80687
  ["path", { d: "M21.801 10A10 10 0 1 1 17 3.335", key: "yps3ct" }],
80593
80688
  ["path", { d: "m9 11 3 3L22 4", key: "1pflzl" }]
80594
80689
  ];
80595
- const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1Y);
80690
+ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1Z);
80596
80691
 
80597
80692
  /**
80598
80693
  * @license lucide-react v0.528.0 - ISC
@@ -80602,11 +80697,11 @@ const CircleCheckBig = createLucideIcon("circle-check-big", __iconNode$1Y);
80602
80697
  */
80603
80698
 
80604
80699
 
80605
- const __iconNode$1X = [
80700
+ const __iconNode$1Y = [
80606
80701
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
80607
80702
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
80608
80703
  ];
80609
- const CircleCheck = createLucideIcon("circle-check", __iconNode$1X);
80704
+ const CircleCheck = createLucideIcon("circle-check", __iconNode$1Y);
80610
80705
 
80611
80706
  /**
80612
80707
  * @license lucide-react v0.528.0 - ISC
@@ -80616,11 +80711,11 @@ const CircleCheck = createLucideIcon("circle-check", __iconNode$1X);
80616
80711
  */
80617
80712
 
80618
80713
 
80619
- const __iconNode$1W = [
80714
+ const __iconNode$1X = [
80620
80715
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
80621
80716
  ["path", { d: "M8 12h8", key: "1wcyev" }]
80622
80717
  ];
80623
- const CircleMinus$1 = createLucideIcon("circle-minus", __iconNode$1W);
80718
+ const CircleMinus$1 = createLucideIcon("circle-minus", __iconNode$1X);
80624
80719
 
80625
80720
  /**
80626
80721
  * @license lucide-react v0.528.0 - ISC
@@ -80630,11 +80725,11 @@ const CircleMinus$1 = createLucideIcon("circle-minus", __iconNode$1W);
80630
80725
  */
80631
80726
 
80632
80727
 
80633
- const __iconNode$1V = [
80728
+ const __iconNode$1W = [
80634
80729
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
80635
80730
  ["rect", { x: "9", y: "9", width: "6", height: "6", rx: "1", key: "1ssd4o" }]
80636
80731
  ];
80637
- const CircleStop = createLucideIcon("circle-stop", __iconNode$1V);
80732
+ const CircleStop = createLucideIcon("circle-stop", __iconNode$1W);
80638
80733
 
80639
80734
  /**
80640
80735
  * @license lucide-react v0.528.0 - ISC
@@ -80644,12 +80739,12 @@ const CircleStop = createLucideIcon("circle-stop", __iconNode$1V);
80644
80739
  */
80645
80740
 
80646
80741
 
80647
- const __iconNode$1U = [
80742
+ const __iconNode$1V = [
80648
80743
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
80649
80744
  ["path", { d: "m15 9-6 6", key: "1uzhvr" }],
80650
80745
  ["path", { d: "m9 9 6 6", key: "z0biqf" }]
80651
80746
  ];
80652
- const CircleX = createLucideIcon("circle-x", __iconNode$1U);
80747
+ const CircleX = createLucideIcon("circle-x", __iconNode$1V);
80653
80748
 
80654
80749
  /**
80655
80750
  * @license lucide-react v0.528.0 - ISC
@@ -80659,8 +80754,8 @@ const CircleX = createLucideIcon("circle-x", __iconNode$1U);
80659
80754
  */
80660
80755
 
80661
80756
 
80662
- const __iconNode$1T = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
80663
- const Circle = createLucideIcon("circle", __iconNode$1T);
80757
+ const __iconNode$1U = [["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]];
80758
+ const Circle = createLucideIcon("circle", __iconNode$1U);
80664
80759
 
80665
80760
  /**
80666
80761
  * @license lucide-react v0.528.0 - ISC
@@ -80670,7 +80765,7 @@ const Circle = createLucideIcon("circle", __iconNode$1T);
80670
80765
  */
80671
80766
 
80672
80767
 
80673
- const __iconNode$1S = [
80768
+ const __iconNode$1T = [
80674
80769
  ["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
80675
80770
  [
80676
80771
  "path",
@@ -80684,7 +80779,7 @@ const __iconNode$1S = [
80684
80779
  ["path", { d: "M8 11h.01", key: "1dfujw" }],
80685
80780
  ["path", { d: "M8 16h.01", key: "18s6g9" }]
80686
80781
  ];
80687
- const ClipboardList = createLucideIcon("clipboard-list", __iconNode$1S);
80782
+ const ClipboardList = createLucideIcon("clipboard-list", __iconNode$1T);
80688
80783
 
80689
80784
  /**
80690
80785
  * @license lucide-react v0.528.0 - ISC
@@ -80694,11 +80789,11 @@ const ClipboardList = createLucideIcon("clipboard-list", __iconNode$1S);
80694
80789
  */
80695
80790
 
80696
80791
 
80697
- const __iconNode$1R = [
80792
+ const __iconNode$1S = [
80698
80793
  ["path", { d: "M12 6v6l4 2", key: "mmk7yg" }],
80699
80794
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }]
80700
80795
  ];
80701
- const Clock = createLucideIcon("clock", __iconNode$1R);
80796
+ const Clock = createLucideIcon("clock", __iconNode$1S);
80702
80797
 
80703
80798
  /**
80704
80799
  * @license lucide-react v0.528.0 - ISC
@@ -80708,12 +80803,12 @@ const Clock = createLucideIcon("clock", __iconNode$1R);
80708
80803
  */
80709
80804
 
80710
80805
 
80711
- const __iconNode$1Q = [
80806
+ const __iconNode$1R = [
80712
80807
  ["path", { d: "m18 16 4-4-4-4", key: "1inbqp" }],
80713
80808
  ["path", { d: "m6 8-4 4 4 4", key: "15zrgr" }],
80714
80809
  ["path", { d: "m14.5 4-5 16", key: "e7oirm" }]
80715
80810
  ];
80716
- const CodeXml = createLucideIcon("code-xml", __iconNode$1Q);
80811
+ const CodeXml = createLucideIcon("code-xml", __iconNode$1R);
80717
80812
 
80718
80813
  /**
80719
80814
  * @license lucide-react v0.528.0 - ISC
@@ -80723,11 +80818,11 @@ const CodeXml = createLucideIcon("code-xml", __iconNode$1Q);
80723
80818
  */
80724
80819
 
80725
80820
 
80726
- const __iconNode$1P = [
80821
+ const __iconNode$1Q = [
80727
80822
  ["path", { d: "m16 18 6-6-6-6", key: "eg8j8" }],
80728
80823
  ["path", { d: "m8 6-6 6 6 6", key: "ppft3o" }]
80729
80824
  ];
80730
- const Code$1 = createLucideIcon("code", __iconNode$1P);
80825
+ const Code$1 = createLucideIcon("code", __iconNode$1Q);
80731
80826
 
80732
80827
  /**
80733
80828
  * @license lucide-react v0.528.0 - ISC
@@ -80737,11 +80832,11 @@ const Code$1 = createLucideIcon("code", __iconNode$1P);
80737
80832
  */
80738
80833
 
80739
80834
 
80740
- const __iconNode$1O = [
80835
+ const __iconNode$1P = [
80741
80836
  ["rect", { width: "14", height: "14", x: "8", y: "8", rx: "2", ry: "2", key: "17jyea" }],
80742
80837
  ["path", { d: "M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2", key: "zix9uf" }]
80743
80838
  ];
80744
- const Copy = createLucideIcon("copy", __iconNode$1O);
80839
+ const Copy = createLucideIcon("copy", __iconNode$1P);
80745
80840
 
80746
80841
  /**
80747
80842
  * @license lucide-react v0.528.0 - ISC
@@ -80751,11 +80846,11 @@ const Copy = createLucideIcon("copy", __iconNode$1O);
80751
80846
  */
80752
80847
 
80753
80848
 
80754
- const __iconNode$1N = [
80849
+ const __iconNode$1O = [
80755
80850
  ["rect", { width: "20", height: "14", x: "2", y: "5", rx: "2", key: "ynyp8z" }],
80756
80851
  ["line", { x1: "2", x2: "22", y1: "10", y2: "10", key: "1b3vmo" }]
80757
80852
  ];
80758
- const CreditCard = createLucideIcon("credit-card", __iconNode$1N);
80853
+ const CreditCard = createLucideIcon("credit-card", __iconNode$1O);
80759
80854
 
80760
80855
  /**
80761
80856
  * @license lucide-react v0.528.0 - ISC
@@ -80765,12 +80860,12 @@ const CreditCard = createLucideIcon("credit-card", __iconNode$1N);
80765
80860
  */
80766
80861
 
80767
80862
 
80768
- const __iconNode$1M = [
80863
+ const __iconNode$1N = [
80769
80864
  ["ellipse", { cx: "12", cy: "5", rx: "9", ry: "3", key: "msslwz" }],
80770
80865
  ["path", { d: "M3 5V19A9 3 0 0 0 21 19V5", key: "1wlel7" }],
80771
80866
  ["path", { d: "M3 12A9 3 0 0 0 21 12", key: "mv7ke4" }]
80772
80867
  ];
80773
- const Database = createLucideIcon("database", __iconNode$1M);
80868
+ const Database = createLucideIcon("database", __iconNode$1N);
80774
80869
 
80775
80870
  /**
80776
80871
  * @license lucide-react v0.528.0 - ISC
@@ -80780,11 +80875,11 @@ const Database = createLucideIcon("database", __iconNode$1M);
80780
80875
  */
80781
80876
 
80782
80877
 
80783
- const __iconNode$1L = [
80878
+ const __iconNode$1M = [
80784
80879
  ["line", { x1: "12", x2: "12", y1: "2", y2: "22", key: "7eqyqh" }],
80785
80880
  ["path", { d: "M17 5H9.5a3.5 3.5 0 0 0 0 7h5a3.5 3.5 0 0 1 0 7H6", key: "1b0p4s" }]
80786
80881
  ];
80787
- const DollarSign = createLucideIcon("dollar-sign", __iconNode$1L);
80882
+ const DollarSign = createLucideIcon("dollar-sign", __iconNode$1M);
80788
80883
 
80789
80884
  /**
80790
80885
  * @license lucide-react v0.528.0 - ISC
@@ -80794,7 +80889,7 @@ const DollarSign = createLucideIcon("dollar-sign", __iconNode$1L);
80794
80889
  */
80795
80890
 
80796
80891
 
80797
- const __iconNode$1K = [
80892
+ const __iconNode$1L = [
80798
80893
  ["path", { d: "M11 20H2", key: "nlcfvz" }],
80799
80894
  [
80800
80895
  "path",
@@ -80807,7 +80902,7 @@ const __iconNode$1K = [
80807
80902
  ["path", { d: "M14 12h.01", key: "1jfl7z" }],
80808
80903
  ["path", { d: "M22 20h-3", key: "vhrsz" }]
80809
80904
  ];
80810
- const DoorOpen = createLucideIcon("door-open", __iconNode$1K);
80905
+ const DoorOpen = createLucideIcon("door-open", __iconNode$1L);
80811
80906
 
80812
80907
  /**
80813
80908
  * @license lucide-react v0.528.0 - ISC
@@ -80817,12 +80912,12 @@ const DoorOpen = createLucideIcon("door-open", __iconNode$1K);
80817
80912
  */
80818
80913
 
80819
80914
 
80820
- const __iconNode$1J = [
80915
+ const __iconNode$1K = [
80821
80916
  ["path", { d: "M12 15V3", key: "m9g1x1" }],
80822
80917
  ["path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4", key: "ih7n3h" }],
80823
80918
  ["path", { d: "m7 10 5 5 5-5", key: "brsn70" }]
80824
80919
  ];
80825
- const Download = createLucideIcon("download", __iconNode$1J);
80920
+ const Download = createLucideIcon("download", __iconNode$1K);
80826
80921
 
80827
80922
  /**
80828
80923
  * @license lucide-react v0.528.0 - ISC
@@ -80832,12 +80927,12 @@ const Download = createLucideIcon("download", __iconNode$1J);
80832
80927
  */
80833
80928
 
80834
80929
 
80835
- const __iconNode$1I = [
80930
+ const __iconNode$1J = [
80836
80931
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
80837
80932
  ["circle", { cx: "12", cy: "5", r: "1", key: "gxeob9" }],
80838
80933
  ["circle", { cx: "12", cy: "19", r: "1", key: "lyex9k" }]
80839
80934
  ];
80840
- const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1I);
80935
+ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1J);
80841
80936
 
80842
80937
  /**
80843
80938
  * @license lucide-react v0.528.0 - ISC
@@ -80847,12 +80942,12 @@ const EllipsisVertical = createLucideIcon("ellipsis-vertical", __iconNode$1I);
80847
80942
  */
80848
80943
 
80849
80944
 
80850
- const __iconNode$1H = [
80945
+ const __iconNode$1I = [
80851
80946
  ["circle", { cx: "12", cy: "12", r: "1", key: "41hilf" }],
80852
80947
  ["circle", { cx: "19", cy: "12", r: "1", key: "1wjl8i" }],
80853
80948
  ["circle", { cx: "5", cy: "12", r: "1", key: "1pcz8c" }]
80854
80949
  ];
80855
- const Ellipsis = createLucideIcon("ellipsis", __iconNode$1H);
80950
+ const Ellipsis = createLucideIcon("ellipsis", __iconNode$1I);
80856
80951
 
80857
80952
  /**
80858
80953
  * @license lucide-react v0.528.0 - ISC
@@ -80862,12 +80957,12 @@ const Ellipsis = createLucideIcon("ellipsis", __iconNode$1H);
80862
80957
  */
80863
80958
 
80864
80959
 
80865
- const __iconNode$1G = [
80960
+ const __iconNode$1H = [
80866
80961
  ["path", { d: "M15 3h6v6", key: "1q9fwt" }],
80867
80962
  ["path", { d: "M10 14 21 3", key: "gplh6r" }],
80868
80963
  ["path", { d: "M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6", key: "a6xqqp" }]
80869
80964
  ];
80870
- const ExternalLink = createLucideIcon("external-link", __iconNode$1G);
80965
+ const ExternalLink = createLucideIcon("external-link", __iconNode$1H);
80871
80966
 
80872
80967
  /**
80873
80968
  * @license lucide-react v0.528.0 - ISC
@@ -80877,7 +80972,7 @@ const ExternalLink = createLucideIcon("external-link", __iconNode$1G);
80877
80972
  */
80878
80973
 
80879
80974
 
80880
- const __iconNode$1F = [
80975
+ const __iconNode$1G = [
80881
80976
  [
80882
80977
  "path",
80883
80978
  {
@@ -80895,7 +80990,7 @@ const __iconNode$1F = [
80895
80990
  ],
80896
80991
  ["path", { d: "m2 2 20 20", key: "1ooewy" }]
80897
80992
  ];
80898
- const EyeOff = createLucideIcon("eye-off", __iconNode$1F);
80993
+ const EyeOff = createLucideIcon("eye-off", __iconNode$1G);
80899
80994
 
80900
80995
  /**
80901
80996
  * @license lucide-react v0.528.0 - ISC
@@ -80905,7 +81000,7 @@ const EyeOff = createLucideIcon("eye-off", __iconNode$1F);
80905
81000
  */
80906
81001
 
80907
81002
 
80908
- const __iconNode$1E = [
81003
+ const __iconNode$1F = [
80909
81004
  [
80910
81005
  "path",
80911
81006
  {
@@ -80915,7 +81010,7 @@ const __iconNode$1E = [
80915
81010
  ],
80916
81011
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
80917
81012
  ];
80918
- const Eye = createLucideIcon("eye", __iconNode$1E);
81013
+ const Eye = createLucideIcon("eye", __iconNode$1F);
80919
81014
 
80920
81015
  /**
80921
81016
  * @license lucide-react v0.528.0 - ISC
@@ -80925,7 +81020,7 @@ const Eye = createLucideIcon("eye", __iconNode$1E);
80925
81020
  */
80926
81021
 
80927
81022
 
80928
- const __iconNode$1D = [
81023
+ const __iconNode$1E = [
80929
81024
  ["path", { d: "M10 12v-1", key: "v7bkov" }],
80930
81025
  ["path", { d: "M10 18v-2", key: "1cjy8d" }],
80931
81026
  ["path", { d: "M10 7V6", key: "dljcrl" }],
@@ -80936,7 +81031,7 @@ const __iconNode$1D = [
80936
81031
  ],
80937
81032
  ["circle", { cx: "10", cy: "20", r: "2", key: "1xzdoj" }]
80938
81033
  ];
80939
- const FileArchive = createLucideIcon("file-archive", __iconNode$1D);
81034
+ const FileArchive = createLucideIcon("file-archive", __iconNode$1E);
80940
81035
 
80941
81036
  /**
80942
81037
  * @license lucide-react v0.528.0 - ISC
@@ -80946,7 +81041,7 @@ const FileArchive = createLucideIcon("file-archive", __iconNode$1D);
80946
81041
  */
80947
81042
 
80948
81043
 
80949
- const __iconNode$1C = [
81044
+ const __iconNode$1D = [
80950
81045
  ["path", { d: "M17.5 22h.5a2 2 0 0 0 2-2V7l-5-5H6a2 2 0 0 0-2 2v3", key: "rslqgf" }],
80951
81046
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
80952
81047
  [
@@ -80957,7 +81052,7 @@ const __iconNode$1C = [
80957
81052
  }
80958
81053
  ]
80959
81054
  ];
80960
- const FileAudio = createLucideIcon("file-audio", __iconNode$1C);
81055
+ const FileAudio = createLucideIcon("file-audio", __iconNode$1D);
80961
81056
 
80962
81057
  /**
80963
81058
  * @license lucide-react v0.528.0 - ISC
@@ -80967,13 +81062,13 @@ const FileAudio = createLucideIcon("file-audio", __iconNode$1C);
80967
81062
  */
80968
81063
 
80969
81064
 
80970
- const __iconNode$1B = [
81065
+ const __iconNode$1C = [
80971
81066
  ["path", { d: "M10 12.5 8 15l2 2.5", key: "1tg20x" }],
80972
81067
  ["path", { d: "m14 12.5 2 2.5-2 2.5", key: "yinavb" }],
80973
81068
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
80974
81069
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }]
80975
81070
  ];
80976
- const FileCode = createLucideIcon("file-code", __iconNode$1B);
81071
+ const FileCode = createLucideIcon("file-code", __iconNode$1C);
80977
81072
 
80978
81073
  /**
80979
81074
  * @license lucide-react v0.528.0 - ISC
@@ -80983,13 +81078,13 @@ const FileCode = createLucideIcon("file-code", __iconNode$1B);
80983
81078
  */
80984
81079
 
80985
81080
 
80986
- const __iconNode$1A = [
81081
+ const __iconNode$1B = [
80987
81082
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
80988
81083
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
80989
81084
  ["path", { d: "M12 18v-6", key: "17g6i2" }],
80990
81085
  ["path", { d: "m9 15 3 3 3-3", key: "1npd3o" }]
80991
81086
  ];
80992
- const FileDown = createLucideIcon("file-down", __iconNode$1A);
81087
+ const FileDown = createLucideIcon("file-down", __iconNode$1B);
80993
81088
 
80994
81089
  /**
80995
81090
  * @license lucide-react v0.528.0 - ISC
@@ -80999,13 +81094,13 @@ const FileDown = createLucideIcon("file-down", __iconNode$1A);
80999
81094
  */
81000
81095
 
81001
81096
 
81002
- const __iconNode$1z = [
81097
+ const __iconNode$1A = [
81003
81098
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
81004
81099
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
81005
81100
  ["circle", { cx: "10", cy: "12", r: "2", key: "737tya" }],
81006
81101
  ["path", { d: "m20 17-1.296-1.296a2.41 2.41 0 0 0-3.408 0L9 22", key: "wt3hpn" }]
81007
81102
  ];
81008
- const FileImage = createLucideIcon("file-image", __iconNode$1z);
81103
+ const FileImage = createLucideIcon("file-image", __iconNode$1A);
81009
81104
 
81010
81105
  /**
81011
81106
  * @license lucide-react v0.528.0 - ISC
@@ -81015,7 +81110,7 @@ const FileImage = createLucideIcon("file-image", __iconNode$1z);
81015
81110
  */
81016
81111
 
81017
81112
 
81018
- const __iconNode$1y = [
81113
+ const __iconNode$1z = [
81019
81114
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
81020
81115
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z", key: "1mlx9k" }],
81021
81116
  [
@@ -81026,7 +81121,7 @@ const __iconNode$1y = [
81026
81121
  }
81027
81122
  ]
81028
81123
  ];
81029
- const FilePlay = createLucideIcon("file-play", __iconNode$1y);
81124
+ const FilePlay = createLucideIcon("file-play", __iconNode$1z);
81030
81125
 
81031
81126
  /**
81032
81127
  * @license lucide-react v0.528.0 - ISC
@@ -81036,7 +81131,7 @@ const FilePlay = createLucideIcon("file-play", __iconNode$1y);
81036
81131
  */
81037
81132
 
81038
81133
 
81039
- const __iconNode$1x = [
81134
+ const __iconNode$1y = [
81040
81135
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
81041
81136
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
81042
81137
  ["path", { d: "M8 13h2", key: "yr2amv" }],
@@ -81044,7 +81139,7 @@ const __iconNode$1x = [
81044
81139
  ["path", { d: "M8 17h2", key: "2yhykz" }],
81045
81140
  ["path", { d: "M14 17h2", key: "10kma7" }]
81046
81141
  ];
81047
- const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1x);
81142
+ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1y);
81048
81143
 
81049
81144
  /**
81050
81145
  * @license lucide-react v0.528.0 - ISC
@@ -81054,14 +81149,14 @@ const FileSpreadsheet = createLucideIcon("file-spreadsheet", __iconNode$1x);
81054
81149
  */
81055
81150
 
81056
81151
 
81057
- const __iconNode$1w = [
81152
+ const __iconNode$1x = [
81058
81153
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
81059
81154
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }],
81060
81155
  ["path", { d: "M10 9H8", key: "b1mrlr" }],
81061
81156
  ["path", { d: "M16 13H8", key: "t4e002" }],
81062
81157
  ["path", { d: "M16 17H8", key: "z1uh3a" }]
81063
81158
  ];
81064
- const FileText = createLucideIcon("file-text", __iconNode$1w);
81159
+ const FileText = createLucideIcon("file-text", __iconNode$1x);
81065
81160
 
81066
81161
  /**
81067
81162
  * @license lucide-react v0.528.0 - ISC
@@ -81071,11 +81166,11 @@ const FileText = createLucideIcon("file-text", __iconNode$1w);
81071
81166
  */
81072
81167
 
81073
81168
 
81074
- const __iconNode$1v = [
81169
+ const __iconNode$1w = [
81075
81170
  ["path", { d: "M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z", key: "1rqfz7" }],
81076
81171
  ["path", { d: "M14 2v4a2 2 0 0 0 2 2h4", key: "tnqrlb" }]
81077
81172
  ];
81078
- const File$1 = createLucideIcon("file", __iconNode$1v);
81173
+ const File$1 = createLucideIcon("file", __iconNode$1w);
81079
81174
 
81080
81175
  /**
81081
81176
  * @license lucide-react v0.528.0 - ISC
@@ -81085,7 +81180,7 @@ const File$1 = createLucideIcon("file", __iconNode$1v);
81085
81180
  */
81086
81181
 
81087
81182
 
81088
- const __iconNode$1u = [
81183
+ const __iconNode$1v = [
81089
81184
  [
81090
81185
  "path",
81091
81186
  {
@@ -81103,7 +81198,7 @@ const __iconNode$1u = [
81103
81198
  ["path", { d: "M3 5a2 2 0 0 0 2 2h3", key: "f2jnh7" }],
81104
81199
  ["path", { d: "M3 3v13a2 2 0 0 0 2 2h3", key: "k8epm1" }]
81105
81200
  ];
81106
- const FolderTree = createLucideIcon("folder-tree", __iconNode$1u);
81201
+ const FolderTree = createLucideIcon("folder-tree", __iconNode$1v);
81107
81202
 
81108
81203
  /**
81109
81204
  * @license lucide-react v0.528.0 - ISC
@@ -81113,11 +81208,11 @@ const FolderTree = createLucideIcon("folder-tree", __iconNode$1u);
81113
81208
  */
81114
81209
 
81115
81210
 
81116
- const __iconNode$1t = [
81211
+ const __iconNode$1u = [
81117
81212
  ["path", { d: "m12 14 4-4", key: "9kzdfg" }],
81118
81213
  ["path", { d: "M3.34 19a10 10 0 1 1 17.32 0", key: "19p75a" }]
81119
81214
  ];
81120
- const Gauge = createLucideIcon("gauge", __iconNode$1t);
81215
+ const Gauge = createLucideIcon("gauge", __iconNode$1u);
81121
81216
 
81122
81217
  /**
81123
81218
  * @license lucide-react v0.528.0 - ISC
@@ -81127,14 +81222,14 @@ const Gauge = createLucideIcon("gauge", __iconNode$1t);
81127
81222
  */
81128
81223
 
81129
81224
 
81130
- const __iconNode$1s = [
81225
+ const __iconNode$1t = [
81131
81226
  ["path", { d: "m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8", key: "15492f" }],
81132
81227
  ["path", { d: "m16 16 6-6", key: "vzrcl6" }],
81133
81228
  ["path", { d: "m8 8 6-6", key: "18bi4p" }],
81134
81229
  ["path", { d: "m9 7 8 8", key: "5jnvq1" }],
81135
81230
  ["path", { d: "m21 11-8-8", key: "z4y7zo" }]
81136
81231
  ];
81137
- const Gavel = createLucideIcon("gavel", __iconNode$1s);
81232
+ const Gavel = createLucideIcon("gavel", __iconNode$1t);
81138
81233
 
81139
81234
  /**
81140
81235
  * @license lucide-react v0.528.0 - ISC
@@ -81144,13 +81239,13 @@ const Gavel = createLucideIcon("gavel", __iconNode$1s);
81144
81239
  */
81145
81240
 
81146
81241
 
81147
- const __iconNode$1r = [
81242
+ const __iconNode$1s = [
81148
81243
  ["line", { x1: "6", x2: "6", y1: "3", y2: "15", key: "17qcm7" }],
81149
81244
  ["circle", { cx: "18", cy: "6", r: "3", key: "1h7g24" }],
81150
81245
  ["circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" }],
81151
81246
  ["path", { d: "M18 9a9 9 0 0 1-9 9", key: "n2h4wq" }]
81152
81247
  ];
81153
- const GitBranch = createLucideIcon("git-branch", __iconNode$1r);
81248
+ const GitBranch = createLucideIcon("git-branch", __iconNode$1s);
81154
81249
 
81155
81250
  /**
81156
81251
  * @license lucide-react v0.528.0 - ISC
@@ -81160,12 +81255,12 @@ const GitBranch = createLucideIcon("git-branch", __iconNode$1r);
81160
81255
  */
81161
81256
 
81162
81257
 
81163
- const __iconNode$1q = [
81258
+ const __iconNode$1r = [
81164
81259
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
81165
81260
  ["path", { d: "M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20", key: "13o1zl" }],
81166
81261
  ["path", { d: "M2 12h20", key: "9i4pu4" }]
81167
81262
  ];
81168
- const Globe = createLucideIcon("globe", __iconNode$1q);
81263
+ const Globe = createLucideIcon("globe", __iconNode$1r);
81169
81264
 
81170
81265
  /**
81171
81266
  * @license lucide-react v0.528.0 - ISC
@@ -81175,7 +81270,7 @@ const Globe = createLucideIcon("globe", __iconNode$1q);
81175
81270
  */
81176
81271
 
81177
81272
 
81178
- const __iconNode$1p = [
81273
+ const __iconNode$1q = [
81179
81274
  [
81180
81275
  "path",
81181
81276
  {
@@ -81186,7 +81281,7 @@ const __iconNode$1p = [
81186
81281
  ["path", { d: "M22 10v6", key: "1lu8f3" }],
81187
81282
  ["path", { d: "M6 12.5V16a6 3 0 0 0 12 0v-3.5", key: "1r8lef" }]
81188
81283
  ];
81189
- const GraduationCap = createLucideIcon("graduation-cap", __iconNode$1p);
81284
+ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$1q);
81190
81285
 
81191
81286
  /**
81192
81287
  * @license lucide-react v0.528.0 - ISC
@@ -81196,7 +81291,7 @@ const GraduationCap = createLucideIcon("graduation-cap", __iconNode$1p);
81196
81291
  */
81197
81292
 
81198
81293
 
81199
- const __iconNode$1o = [
81294
+ const __iconNode$1p = [
81200
81295
  ["path", { d: "M14 18a2 2 0 0 0-4 0", key: "1v8fkw" }],
81201
81296
  [
81202
81297
  "path",
@@ -81209,7 +81304,7 @@ const __iconNode$1o = [
81209
81304
  ["circle", { cx: "17", cy: "18", r: "3", key: "82mm0e" }],
81210
81305
  ["circle", { cx: "7", cy: "18", r: "3", key: "lvkj7j" }]
81211
81306
  ];
81212
- const HatGlasses = createLucideIcon("hat-glasses", __iconNode$1o);
81307
+ const HatGlasses = createLucideIcon("hat-glasses", __iconNode$1p);
81213
81308
 
81214
81309
  /**
81215
81310
  * @license lucide-react v0.528.0 - ISC
@@ -81219,13 +81314,13 @@ const HatGlasses = createLucideIcon("hat-glasses", __iconNode$1o);
81219
81314
  */
81220
81315
 
81221
81316
 
81222
- const __iconNode$1n = [
81317
+ const __iconNode$1o = [
81223
81318
  ["path", { d: "M4 12h8", key: "17cfdx" }],
81224
81319
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
81225
81320
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
81226
81321
  ["path", { d: "m17 12 3-2v8", key: "1hhhft" }]
81227
81322
  ];
81228
- const Heading1 = createLucideIcon("heading-1", __iconNode$1n);
81323
+ const Heading1 = createLucideIcon("heading-1", __iconNode$1o);
81229
81324
 
81230
81325
  /**
81231
81326
  * @license lucide-react v0.528.0 - ISC
@@ -81235,13 +81330,13 @@ const Heading1 = createLucideIcon("heading-1", __iconNode$1n);
81235
81330
  */
81236
81331
 
81237
81332
 
81238
- const __iconNode$1m = [
81333
+ const __iconNode$1n = [
81239
81334
  ["path", { d: "M4 12h8", key: "17cfdx" }],
81240
81335
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
81241
81336
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
81242
81337
  ["path", { d: "M21 18h-4c0-4 4-3 4-6 0-1.5-2-2.5-4-1", key: "9jr5yi" }]
81243
81338
  ];
81244
- const Heading2 = createLucideIcon("heading-2", __iconNode$1m);
81339
+ const Heading2 = createLucideIcon("heading-2", __iconNode$1n);
81245
81340
 
81246
81341
  /**
81247
81342
  * @license lucide-react v0.528.0 - ISC
@@ -81251,14 +81346,14 @@ const Heading2 = createLucideIcon("heading-2", __iconNode$1m);
81251
81346
  */
81252
81347
 
81253
81348
 
81254
- const __iconNode$1l = [
81349
+ const __iconNode$1m = [
81255
81350
  ["path", { d: "M4 12h8", key: "17cfdx" }],
81256
81351
  ["path", { d: "M4 18V6", key: "1rz3zl" }],
81257
81352
  ["path", { d: "M12 18V6", key: "zqpxq5" }],
81258
81353
  ["path", { d: "M17.5 10.5c1.7-1 3.5 0 3.5 1.5a2 2 0 0 1-2 2", key: "68ncm8" }],
81259
81354
  ["path", { d: "M17 17.5c2 1.5 4 .3 4-1.5a2 2 0 0 0-2-2", key: "1ejuhz" }]
81260
81355
  ];
81261
- const Heading3 = createLucideIcon("heading-3", __iconNode$1l);
81356
+ const Heading3 = createLucideIcon("heading-3", __iconNode$1m);
81262
81357
 
81263
81358
  /**
81264
81359
  * @license lucide-react v0.528.0 - ISC
@@ -81268,12 +81363,12 @@ const Heading3 = createLucideIcon("heading-3", __iconNode$1l);
81268
81363
  */
81269
81364
 
81270
81365
 
81271
- const __iconNode$1k = [
81366
+ const __iconNode$1l = [
81272
81367
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
81273
81368
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }],
81274
81369
  ["path", { d: "M12 7v5l4 2", key: "1fdv2h" }]
81275
81370
  ];
81276
- const History = createLucideIcon("history", __iconNode$1k);
81371
+ const History = createLucideIcon("history", __iconNode$1l);
81277
81372
 
81278
81373
  /**
81279
81374
  * @license lucide-react v0.528.0 - ISC
@@ -81283,12 +81378,12 @@ const History = createLucideIcon("history", __iconNode$1k);
81283
81378
  */
81284
81379
 
81285
81380
 
81286
- const __iconNode$1j = [
81381
+ const __iconNode$1k = [
81287
81382
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", ry: "2", key: "1m3agn" }],
81288
81383
  ["circle", { cx: "9", cy: "9", r: "2", key: "af1f0g" }],
81289
81384
  ["path", { d: "m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21", key: "1xmnt7" }]
81290
81385
  ];
81291
- const Image$3 = createLucideIcon("image", __iconNode$1j);
81386
+ const Image$3 = createLucideIcon("image", __iconNode$1k);
81292
81387
 
81293
81388
  /**
81294
81389
  * @license lucide-react v0.528.0 - ISC
@@ -81298,7 +81393,7 @@ const Image$3 = createLucideIcon("image", __iconNode$1j);
81298
81393
  */
81299
81394
 
81300
81395
 
81301
- const __iconNode$1i = [
81396
+ const __iconNode$1j = [
81302
81397
  ["polyline", { points: "22 12 16 12 14 15 10 15 8 12 2 12", key: "o97t9d" }],
81303
81398
  [
81304
81399
  "path",
@@ -81308,7 +81403,7 @@ const __iconNode$1i = [
81308
81403
  }
81309
81404
  ]
81310
81405
  ];
81311
- const Inbox = createLucideIcon("inbox", __iconNode$1i);
81406
+ const Inbox = createLucideIcon("inbox", __iconNode$1j);
81312
81407
 
81313
81408
  /**
81314
81409
  * @license lucide-react v0.528.0 - ISC
@@ -81318,12 +81413,12 @@ const Inbox = createLucideIcon("inbox", __iconNode$1i);
81318
81413
  */
81319
81414
 
81320
81415
 
81321
- const __iconNode$1h = [
81416
+ const __iconNode$1i = [
81322
81417
  ["circle", { cx: "12", cy: "12", r: "10", key: "1mglay" }],
81323
81418
  ["path", { d: "M12 16v-4", key: "1dtifu" }],
81324
81419
  ["path", { d: "M12 8h.01", key: "e9boi3" }]
81325
81420
  ];
81326
- const Info$3 = createLucideIcon("info", __iconNode$1h);
81421
+ const Info$3 = createLucideIcon("info", __iconNode$1i);
81327
81422
 
81328
81423
  /**
81329
81424
  * @license lucide-react v0.528.0 - ISC
@@ -81333,12 +81428,12 @@ const Info$3 = createLucideIcon("info", __iconNode$1h);
81333
81428
  */
81334
81429
 
81335
81430
 
81336
- const __iconNode$1g = [
81431
+ const __iconNode$1h = [
81337
81432
  ["line", { x1: "19", x2: "10", y1: "4", y2: "4", key: "15jd3p" }],
81338
81433
  ["line", { x1: "14", x2: "5", y1: "20", y2: "20", key: "bu0au3" }],
81339
81434
  ["line", { x1: "15", x2: "9", y1: "4", y2: "20", key: "uljnxc" }]
81340
81435
  ];
81341
- const Italic$1 = createLucideIcon("italic", __iconNode$1g);
81436
+ const Italic$1 = createLucideIcon("italic", __iconNode$1h);
81342
81437
 
81343
81438
  /**
81344
81439
  * @license lucide-react v0.528.0 - ISC
@@ -81348,7 +81443,7 @@ const Italic$1 = createLucideIcon("italic", __iconNode$1g);
81348
81443
  */
81349
81444
 
81350
81445
 
81351
- const __iconNode$1f = [
81446
+ const __iconNode$1g = [
81352
81447
  [
81353
81448
  "path",
81354
81449
  {
@@ -81358,7 +81453,7 @@ const __iconNode$1f = [
81358
81453
  ],
81359
81454
  ["circle", { cx: "16.5", cy: "7.5", r: ".5", fill: "currentColor", key: "w0ekpg" }]
81360
81455
  ];
81361
- const KeyRound = createLucideIcon("key-round", __iconNode$1f);
81456
+ const KeyRound = createLucideIcon("key-round", __iconNode$1g);
81362
81457
 
81363
81458
  /**
81364
81459
  * @license lucide-react v0.528.0 - ISC
@@ -81368,7 +81463,7 @@ const KeyRound = createLucideIcon("key-round", __iconNode$1f);
81368
81463
  */
81369
81464
 
81370
81465
 
81371
- const __iconNode$1e = [
81466
+ const __iconNode$1f = [
81372
81467
  ["path", { d: "M10 18v-7", key: "wt116b" }],
81373
81468
  [
81374
81469
  "path",
@@ -81382,7 +81477,7 @@ const __iconNode$1e = [
81382
81477
  ["path", { d: "M3 22h18", key: "8prr45" }],
81383
81478
  ["path", { d: "M6 18v-7", key: "1ivflk" }]
81384
81479
  ];
81385
- const Landmark = createLucideIcon("landmark", __iconNode$1e);
81480
+ const Landmark = createLucideIcon("landmark", __iconNode$1f);
81386
81481
 
81387
81482
  /**
81388
81483
  * @license lucide-react v0.528.0 - ISC
@@ -81392,7 +81487,7 @@ const Landmark = createLucideIcon("landmark", __iconNode$1e);
81392
81487
  */
81393
81488
 
81394
81489
 
81395
- const __iconNode$1d = [
81490
+ const __iconNode$1e = [
81396
81491
  [
81397
81492
  "path",
81398
81493
  {
@@ -81415,7 +81510,7 @@ const __iconNode$1d = [
81415
81510
  }
81416
81511
  ]
81417
81512
  ];
81418
- const Layers = createLucideIcon("layers", __iconNode$1d);
81513
+ const Layers = createLucideIcon("layers", __iconNode$1e);
81419
81514
 
81420
81515
  /**
81421
81516
  * @license lucide-react v0.528.0 - ISC
@@ -81425,12 +81520,12 @@ const Layers = createLucideIcon("layers", __iconNode$1d);
81425
81520
  */
81426
81521
 
81427
81522
 
81428
- const __iconNode$1c = [
81523
+ const __iconNode$1d = [
81429
81524
  ["path", { d: "M9 17H7A5 5 0 0 1 7 7h2", key: "8i5ue5" }],
81430
81525
  ["path", { d: "M15 7h2a5 5 0 1 1 0 10h-2", key: "1b9ql8" }],
81431
81526
  ["line", { x1: "8", x2: "16", y1: "12", y2: "12", key: "1jonct" }]
81432
81527
  ];
81433
- const Link2 = createLucideIcon("link-2", __iconNode$1c);
81528
+ const Link2 = createLucideIcon("link-2", __iconNode$1d);
81434
81529
 
81435
81530
  /**
81436
81531
  * @license lucide-react v0.528.0 - ISC
@@ -81440,11 +81535,11 @@ const Link2 = createLucideIcon("link-2", __iconNode$1c);
81440
81535
  */
81441
81536
 
81442
81537
 
81443
- const __iconNode$1b = [
81538
+ const __iconNode$1c = [
81444
81539
  ["path", { d: "M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71", key: "1cjeqo" }],
81445
81540
  ["path", { d: "M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71", key: "19qd67" }]
81446
81541
  ];
81447
- const Link$1 = createLucideIcon("link", __iconNode$1b);
81542
+ const Link$1 = createLucideIcon("link", __iconNode$1c);
81448
81543
 
81449
81544
  /**
81450
81545
  * @license lucide-react v0.528.0 - ISC
@@ -81454,7 +81549,7 @@ const Link$1 = createLucideIcon("link", __iconNode$1b);
81454
81549
  */
81455
81550
 
81456
81551
 
81457
- const __iconNode$1a = [
81552
+ const __iconNode$1b = [
81458
81553
  ["path", { d: "M10 12h11", key: "6m4ad9" }],
81459
81554
  ["path", { d: "M10 18h11", key: "11hvi2" }],
81460
81555
  ["path", { d: "M10 6h11", key: "c7qv1k" }],
@@ -81462,7 +81557,7 @@ const __iconNode$1a = [
81462
81557
  ["path", { d: "M4 6h1v4", key: "cnovpq" }],
81463
81558
  ["path", { d: "M6 18H4c0-1 2-2 2-3s-1-1.5-2-1", key: "m9a95d" }]
81464
81559
  ];
81465
- const ListOrdered = createLucideIcon("list-ordered", __iconNode$1a);
81560
+ const ListOrdered = createLucideIcon("list-ordered", __iconNode$1b);
81466
81561
 
81467
81562
  /**
81468
81563
  * @license lucide-react v0.528.0 - ISC
@@ -81472,7 +81567,7 @@ const ListOrdered = createLucideIcon("list-ordered", __iconNode$1a);
81472
81567
  */
81473
81568
 
81474
81569
 
81475
- const __iconNode$19 = [
81570
+ const __iconNode$1a = [
81476
81571
  ["path", { d: "M3 12h.01", key: "nlz23k" }],
81477
81572
  ["path", { d: "M3 18h.01", key: "1tta3j" }],
81478
81573
  ["path", { d: "M3 6h.01", key: "1rqtza" }],
@@ -81480,7 +81575,7 @@ const __iconNode$19 = [
81480
81575
  ["path", { d: "M8 18h13", key: "1lx6n3" }],
81481
81576
  ["path", { d: "M8 6h13", key: "ik3vkj" }]
81482
81577
  ];
81483
- const List$1 = createLucideIcon("list", __iconNode$19);
81578
+ const List$1 = createLucideIcon("list", __iconNode$1a);
81484
81579
 
81485
81580
  /**
81486
81581
  * @license lucide-react v0.528.0 - ISC
@@ -81490,8 +81585,8 @@ const List$1 = createLucideIcon("list", __iconNode$19);
81490
81585
  */
81491
81586
 
81492
81587
 
81493
- const __iconNode$18 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
81494
- const LoaderCircle = createLucideIcon("loader-circle", __iconNode$18);
81588
+ const __iconNode$19 = [["path", { d: "M21 12a9 9 0 1 1-6.219-8.56", key: "13zald" }]];
81589
+ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$19);
81495
81590
 
81496
81591
  /**
81497
81592
  * @license lucide-react v0.528.0 - ISC
@@ -81501,11 +81596,11 @@ const LoaderCircle = createLucideIcon("loader-circle", __iconNode$18);
81501
81596
  */
81502
81597
 
81503
81598
 
81504
- const __iconNode$17 = [
81599
+ const __iconNode$18 = [
81505
81600
  ["rect", { width: "18", height: "11", x: "3", y: "11", rx: "2", ry: "2", key: "1w4ew1" }],
81506
81601
  ["path", { d: "M7 11V7a5 5 0 0 1 10 0v4", key: "fwvmzm" }]
81507
81602
  ];
81508
- const Lock = createLucideIcon("lock", __iconNode$17);
81603
+ const Lock = createLucideIcon("lock", __iconNode$18);
81509
81604
 
81510
81605
  /**
81511
81606
  * @license lucide-react v0.528.0 - ISC
@@ -81515,11 +81610,11 @@ const Lock = createLucideIcon("lock", __iconNode$17);
81515
81610
  */
81516
81611
 
81517
81612
 
81518
- const __iconNode$16 = [
81613
+ const __iconNode$17 = [
81519
81614
  ["path", { d: "m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7", key: "132q7q" }],
81520
81615
  ["rect", { x: "2", y: "4", width: "20", height: "16", rx: "2", key: "izxlao" }]
81521
81616
  ];
81522
- const Mail = createLucideIcon("mail", __iconNode$16);
81617
+ const Mail = createLucideIcon("mail", __iconNode$17);
81523
81618
 
81524
81619
  /**
81525
81620
  * @license lucide-react v0.528.0 - ISC
@@ -81529,10 +81624,10 @@ const Mail = createLucideIcon("mail", __iconNode$16);
81529
81624
  */
81530
81625
 
81531
81626
 
81532
- const __iconNode$15 = [
81627
+ const __iconNode$16 = [
81533
81628
  ["path", { d: "M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z", key: "1lielz" }]
81534
81629
  ];
81535
- const MessageSquare = createLucideIcon("message-square", __iconNode$15);
81630
+ const MessageSquare = createLucideIcon("message-square", __iconNode$16);
81536
81631
 
81537
81632
  /**
81538
81633
  * @license lucide-react v0.528.0 - ISC
@@ -81542,12 +81637,12 @@ const MessageSquare = createLucideIcon("message-square", __iconNode$15);
81542
81637
  */
81543
81638
 
81544
81639
 
81545
- const __iconNode$14 = [
81640
+ const __iconNode$15 = [
81546
81641
  ["path", { d: "M12 19v3", key: "npa21l" }],
81547
81642
  ["path", { d: "M19 10v2a7 7 0 0 1-14 0v-2", key: "1vc78b" }],
81548
81643
  ["rect", { x: "9", y: "2", width: "6", height: "13", rx: "3", key: "s6n7sd" }]
81549
81644
  ];
81550
- const Mic = createLucideIcon("mic", __iconNode$14);
81645
+ const Mic = createLucideIcon("mic", __iconNode$15);
81551
81646
 
81552
81647
  /**
81553
81648
  * @license lucide-react v0.528.0 - ISC
@@ -81557,12 +81652,12 @@ const Mic = createLucideIcon("mic", __iconNode$14);
81557
81652
  */
81558
81653
 
81559
81654
 
81560
- const __iconNode$13 = [
81655
+ const __iconNode$14 = [
81561
81656
  ["rect", { width: "20", height: "14", x: "2", y: "3", rx: "2", key: "48i651" }],
81562
81657
  ["line", { x1: "8", x2: "16", y1: "21", y2: "21", key: "1svkeh" }],
81563
81658
  ["line", { x1: "12", x2: "12", y1: "17", y2: "21", key: "vw1qmm" }]
81564
81659
  ];
81565
- const Monitor = createLucideIcon("monitor", __iconNode$13);
81660
+ const Monitor = createLucideIcon("monitor", __iconNode$14);
81566
81661
 
81567
81662
  /**
81568
81663
  * @license lucide-react v0.528.0 - ISC
@@ -81572,7 +81667,7 @@ const Monitor = createLucideIcon("monitor", __iconNode$13);
81572
81667
  */
81573
81668
 
81574
81669
 
81575
- const __iconNode$12 = [
81670
+ const __iconNode$13 = [
81576
81671
  [
81577
81672
  "path",
81578
81673
  {
@@ -81581,7 +81676,7 @@ const __iconNode$12 = [
81581
81676
  }
81582
81677
  ]
81583
81678
  ];
81584
- const Paperclip = createLucideIcon("paperclip", __iconNode$12);
81679
+ const Paperclip = createLucideIcon("paperclip", __iconNode$13);
81585
81680
 
81586
81681
  /**
81587
81682
  * @license lucide-react v0.528.0 - ISC
@@ -81591,7 +81686,7 @@ const Paperclip = createLucideIcon("paperclip", __iconNode$12);
81591
81686
  */
81592
81687
 
81593
81688
 
81594
- const __iconNode$11 = [
81689
+ const __iconNode$12 = [
81595
81690
  ["path", { d: "M13 21h8", key: "1jsn5i" }],
81596
81691
  [
81597
81692
  "path",
@@ -81601,7 +81696,7 @@ const __iconNode$11 = [
81601
81696
  }
81602
81697
  ]
81603
81698
  ];
81604
- const PenLine = createLucideIcon("pen-line", __iconNode$11);
81699
+ const PenLine = createLucideIcon("pen-line", __iconNode$12);
81605
81700
 
81606
81701
  /**
81607
81702
  * @license lucide-react v0.528.0 - ISC
@@ -81611,7 +81706,7 @@ const PenLine = createLucideIcon("pen-line", __iconNode$11);
81611
81706
  */
81612
81707
 
81613
81708
 
81614
- const __iconNode$10 = [
81709
+ const __iconNode$11 = [
81615
81710
  [
81616
81711
  "path",
81617
81712
  {
@@ -81620,7 +81715,7 @@ const __iconNode$10 = [
81620
81715
  }
81621
81716
  ]
81622
81717
  ];
81623
- const Pen = createLucideIcon("pen", __iconNode$10);
81718
+ const Pen = createLucideIcon("pen", __iconNode$11);
81624
81719
 
81625
81720
  /**
81626
81721
  * @license lucide-react v0.528.0 - ISC
@@ -81630,7 +81725,7 @@ const Pen = createLucideIcon("pen", __iconNode$10);
81630
81725
  */
81631
81726
 
81632
81727
 
81633
- const __iconNode$$ = [
81728
+ const __iconNode$10 = [
81634
81729
  [
81635
81730
  "path",
81636
81731
  {
@@ -81640,7 +81735,7 @@ const __iconNode$$ = [
81640
81735
  ],
81641
81736
  ["path", { d: "m15 5 4 4", key: "1mk7zo" }]
81642
81737
  ];
81643
- const Pencil = createLucideIcon("pencil", __iconNode$$);
81738
+ const Pencil = createLucideIcon("pencil", __iconNode$10);
81644
81739
 
81645
81740
  /**
81646
81741
  * @license lucide-react v0.528.0 - ISC
@@ -81650,7 +81745,7 @@ const Pencil = createLucideIcon("pencil", __iconNode$$);
81650
81745
  */
81651
81746
 
81652
81747
 
81653
- const __iconNode$_ = [
81748
+ const __iconNode$$ = [
81654
81749
  [
81655
81750
  "path",
81656
81751
  {
@@ -81659,7 +81754,7 @@ const __iconNode$_ = [
81659
81754
  }
81660
81755
  ]
81661
81756
  ];
81662
- const Play = createLucideIcon("play", __iconNode$_);
81757
+ const Play = createLucideIcon("play", __iconNode$$);
81663
81758
 
81664
81759
  /**
81665
81760
  * @license lucide-react v0.528.0 - ISC
@@ -81669,11 +81764,11 @@ const Play = createLucideIcon("play", __iconNode$_);
81669
81764
  */
81670
81765
 
81671
81766
 
81672
- const __iconNode$Z = [
81767
+ const __iconNode$_ = [
81673
81768
  ["path", { d: "M5 12h14", key: "1ays0h" }],
81674
81769
  ["path", { d: "M12 5v14", key: "s699le" }]
81675
81770
  ];
81676
- const Plus = createLucideIcon("plus", __iconNode$Z);
81771
+ const Plus = createLucideIcon("plus", __iconNode$_);
81677
81772
 
81678
81773
  /**
81679
81774
  * @license lucide-react v0.528.0 - ISC
@@ -81683,12 +81778,12 @@ const Plus = createLucideIcon("plus", __iconNode$Z);
81683
81778
  */
81684
81779
 
81685
81780
 
81686
- const __iconNode$Y = [
81781
+ const __iconNode$Z = [
81687
81782
  ["path", { d: "M2 3h20", key: "91anmk" }],
81688
81783
  ["path", { d: "M21 3v11a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V3", key: "2k9sn8" }],
81689
81784
  ["path", { d: "m7 21 5-5 5 5", key: "bip4we" }]
81690
81785
  ];
81691
- const Presentation = createLucideIcon("presentation", __iconNode$Y);
81786
+ const Presentation = createLucideIcon("presentation", __iconNode$Z);
81692
81787
 
81693
81788
  /**
81694
81789
  * @license lucide-react v0.528.0 - ISC
@@ -81698,7 +81793,7 @@ const Presentation = createLucideIcon("presentation", __iconNode$Y);
81698
81793
  */
81699
81794
 
81700
81795
 
81701
- const __iconNode$X = [
81796
+ const __iconNode$Y = [
81702
81797
  [
81703
81798
  "path",
81704
81799
  {
@@ -81707,7 +81802,7 @@ const __iconNode$X = [
81707
81802
  }
81708
81803
  ]
81709
81804
  ];
81710
- const Puzzle = createLucideIcon("puzzle", __iconNode$X);
81805
+ const Puzzle = createLucideIcon("puzzle", __iconNode$Y);
81711
81806
 
81712
81807
  /**
81713
81808
  * @license lucide-react v0.528.0 - ISC
@@ -81717,7 +81812,7 @@ const Puzzle = createLucideIcon("puzzle", __iconNode$X);
81717
81812
  */
81718
81813
 
81719
81814
 
81720
- const __iconNode$W = [
81815
+ const __iconNode$X = [
81721
81816
  [
81722
81817
  "path",
81723
81818
  {
@@ -81733,7 +81828,7 @@ const __iconNode$W = [
81733
81828
  }
81734
81829
  ]
81735
81830
  ];
81736
- const Quote = createLucideIcon("quote", __iconNode$W);
81831
+ const Quote = createLucideIcon("quote", __iconNode$X);
81737
81832
 
81738
81833
  /**
81739
81834
  * @license lucide-react v0.528.0 - ISC
@@ -81743,14 +81838,14 @@ const Quote = createLucideIcon("quote", __iconNode$W);
81743
81838
  */
81744
81839
 
81745
81840
 
81746
- const __iconNode$V = [
81841
+ const __iconNode$W = [
81747
81842
  ["path", { d: "M16.247 7.761a6 6 0 0 1 0 8.478", key: "1fwjs5" }],
81748
81843
  ["path", { d: "M19.075 4.933a10 10 0 0 1 0 14.134", key: "ehdyv1" }],
81749
81844
  ["path", { d: "M4.925 19.067a10 10 0 0 1 0-14.134", key: "1q22gi" }],
81750
81845
  ["path", { d: "M7.753 16.239a6 6 0 0 1 0-8.478", key: "r2q7qm" }],
81751
81846
  ["circle", { cx: "12", cy: "12", r: "2", key: "1c9p78" }]
81752
81847
  ];
81753
- const Radio$1 = createLucideIcon("radio", __iconNode$V);
81848
+ const Radio$1 = createLucideIcon("radio", __iconNode$W);
81754
81849
 
81755
81850
  /**
81756
81851
  * @license lucide-react v0.528.0 - ISC
@@ -81760,13 +81855,13 @@ const Radio$1 = createLucideIcon("radio", __iconNode$V);
81760
81855
  */
81761
81856
 
81762
81857
 
81763
- const __iconNode$U = [
81858
+ const __iconNode$V = [
81764
81859
  ["path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8", key: "v9h5vc" }],
81765
81860
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }],
81766
81861
  ["path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16", key: "3uifl3" }],
81767
81862
  ["path", { d: "M8 16H3v5", key: "1cv678" }]
81768
81863
  ];
81769
- const RefreshCw = createLucideIcon("refresh-cw", __iconNode$U);
81864
+ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$V);
81770
81865
 
81771
81866
  /**
81772
81867
  * @license lucide-react v0.528.0 - ISC
@@ -81776,13 +81871,13 @@ const RefreshCw = createLucideIcon("refresh-cw", __iconNode$U);
81776
81871
  */
81777
81872
 
81778
81873
 
81779
- const __iconNode$T = [
81874
+ const __iconNode$U = [
81780
81875
  ["path", { d: "m17 2 4 4-4 4", key: "nntrym" }],
81781
81876
  ["path", { d: "M3 11v-1a4 4 0 0 1 4-4h14", key: "84bu3i" }],
81782
81877
  ["path", { d: "m7 22-4-4 4-4", key: "1wqhfi" }],
81783
81878
  ["path", { d: "M21 13v1a4 4 0 0 1-4 4H3", key: "1rx37r" }]
81784
81879
  ];
81785
- const Repeat = createLucideIcon("repeat", __iconNode$T);
81880
+ const Repeat = createLucideIcon("repeat", __iconNode$U);
81786
81881
 
81787
81882
  /**
81788
81883
  * @license lucide-react v0.528.0 - ISC
@@ -81792,11 +81887,11 @@ const Repeat = createLucideIcon("repeat", __iconNode$T);
81792
81887
  */
81793
81888
 
81794
81889
 
81795
- const __iconNode$S = [
81890
+ const __iconNode$T = [
81796
81891
  ["path", { d: "M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8", key: "1357e3" }],
81797
81892
  ["path", { d: "M3 3v5h5", key: "1xhq8a" }]
81798
81893
  ];
81799
- const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$S);
81894
+ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$T);
81800
81895
 
81801
81896
  /**
81802
81897
  * @license lucide-react v0.528.0 - ISC
@@ -81806,11 +81901,11 @@ const RotateCcw = createLucideIcon("rotate-ccw", __iconNode$S);
81806
81901
  */
81807
81902
 
81808
81903
 
81809
- const __iconNode$R = [
81904
+ const __iconNode$S = [
81810
81905
  ["path", { d: "M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8", key: "1p45f6" }],
81811
81906
  ["path", { d: "M21 3v5h-5", key: "1q7to0" }]
81812
81907
  ];
81813
- const RotateCw = createLucideIcon("rotate-cw", __iconNode$R);
81908
+ const RotateCw = createLucideIcon("rotate-cw", __iconNode$S);
81814
81909
 
81815
81910
  /**
81816
81911
  * @license lucide-react v0.528.0 - ISC
@@ -81820,12 +81915,12 @@ const RotateCw = createLucideIcon("rotate-cw", __iconNode$R);
81820
81915
  */
81821
81916
 
81822
81917
 
81823
- const __iconNode$Q = [
81918
+ const __iconNode$R = [
81824
81919
  ["circle", { cx: "6", cy: "19", r: "3", key: "1kj8tv" }],
81825
81920
  ["path", { d: "M9 19h8.5a3.5 3.5 0 0 0 0-7h-11a3.5 3.5 0 0 1 0-7H15", key: "1d8sl" }],
81826
81921
  ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }]
81827
81922
  ];
81828
- const Route = createLucideIcon("route", __iconNode$Q);
81923
+ const Route = createLucideIcon("route", __iconNode$R);
81829
81924
 
81830
81925
  /**
81831
81926
  * @license lucide-react v0.528.0 - ISC
@@ -81835,7 +81930,7 @@ const Route = createLucideIcon("route", __iconNode$Q);
81835
81930
  */
81836
81931
 
81837
81932
 
81838
- const __iconNode$P = [
81933
+ const __iconNode$Q = [
81839
81934
  [
81840
81935
  "path",
81841
81936
  {
@@ -81846,7 +81941,7 @@ const __iconNode$P = [
81846
81941
  ["path", { d: "M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7", key: "1ydtos" }],
81847
81942
  ["path", { d: "M7 3v4a1 1 0 0 0 1 1h7", key: "t51u73" }]
81848
81943
  ];
81849
- const Save = createLucideIcon("save", __iconNode$P);
81944
+ const Save = createLucideIcon("save", __iconNode$Q);
81850
81945
 
81851
81946
  /**
81852
81947
  * @license lucide-react v0.528.0 - ISC
@@ -81856,7 +81951,7 @@ const Save = createLucideIcon("save", __iconNode$P);
81856
81951
  */
81857
81952
 
81858
81953
 
81859
- const __iconNode$O = [
81954
+ const __iconNode$P = [
81860
81955
  ["path", { d: "M14 22v-4a2 2 0 1 0-4 0v4", key: "hhkicm" }],
81861
81956
  [
81862
81957
  "path",
@@ -81870,7 +81965,7 @@ const __iconNode$O = [
81870
81965
  ["path", { d: "M6 5v17", key: "1xfsm0" }],
81871
81966
  ["circle", { cx: "12", cy: "9", r: "2", key: "1092wv" }]
81872
81967
  ];
81873
- const School = createLucideIcon("school", __iconNode$O);
81968
+ const School = createLucideIcon("school", __iconNode$P);
81874
81969
 
81875
81970
  /**
81876
81971
  * @license lucide-react v0.528.0 - ISC
@@ -81880,14 +81975,14 @@ const School = createLucideIcon("school", __iconNode$O);
81880
81975
  */
81881
81976
 
81882
81977
 
81883
- const __iconNode$N = [
81978
+ const __iconNode$O = [
81884
81979
  ["path", { d: "M13 3H4a2 2 0 0 0-2 2v10a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-3", key: "i8wdob" }],
81885
81980
  ["path", { d: "M8 21h8", key: "1ev6f3" }],
81886
81981
  ["path", { d: "M12 17v4", key: "1riwvh" }],
81887
81982
  ["path", { d: "m17 8 5-5", key: "fqif7o" }],
81888
81983
  ["path", { d: "M17 3h5v5", key: "1o3tu8" }]
81889
81984
  ];
81890
- const ScreenShare = createLucideIcon("screen-share", __iconNode$N);
81985
+ const ScreenShare = createLucideIcon("screen-share", __iconNode$O);
81891
81986
 
81892
81987
  /**
81893
81988
  * @license lucide-react v0.528.0 - ISC
@@ -81897,7 +81992,7 @@ const ScreenShare = createLucideIcon("screen-share", __iconNode$N);
81897
81992
  */
81898
81993
 
81899
81994
 
81900
- const __iconNode$M = [
81995
+ const __iconNode$N = [
81901
81996
  ["path", { d: "M15 12h-5", key: "r7krc0" }],
81902
81997
  ["path", { d: "M15 8h-5", key: "1khuty" }],
81903
81998
  ["path", { d: "M19 17V5a2 2 0 0 0-2-2H4", key: "zz82l3" }],
@@ -81909,7 +82004,7 @@ const __iconNode$M = [
81909
82004
  }
81910
82005
  ]
81911
82006
  ];
81912
- const ScrollText = createLucideIcon("scroll-text", __iconNode$M);
82007
+ const ScrollText = createLucideIcon("scroll-text", __iconNode$N);
81913
82008
 
81914
82009
  /**
81915
82010
  * @license lucide-react v0.528.0 - ISC
@@ -81919,11 +82014,11 @@ const ScrollText = createLucideIcon("scroll-text", __iconNode$M);
81919
82014
  */
81920
82015
 
81921
82016
 
81922
- const __iconNode$L = [
82017
+ const __iconNode$M = [
81923
82018
  ["path", { d: "m21 21-4.34-4.34", key: "14j7rj" }],
81924
82019
  ["circle", { cx: "11", cy: "11", r: "8", key: "4ej97u" }]
81925
82020
  ];
81926
- const Search = createLucideIcon("search", __iconNode$L);
82021
+ const Search = createLucideIcon("search", __iconNode$M);
81927
82022
 
81928
82023
  /**
81929
82024
  * @license lucide-react v0.528.0 - ISC
@@ -81933,7 +82028,7 @@ const Search = createLucideIcon("search", __iconNode$L);
81933
82028
  */
81934
82029
 
81935
82030
 
81936
- const __iconNode$K = [
82031
+ const __iconNode$L = [
81937
82032
  [
81938
82033
  "path",
81939
82034
  {
@@ -81943,7 +82038,7 @@ const __iconNode$K = [
81943
82038
  ],
81944
82039
  ["path", { d: "m21.854 2.147-10.94 10.939", key: "12cjpa" }]
81945
82040
  ];
81946
- const Send = createLucideIcon("send", __iconNode$K);
82041
+ const Send = createLucideIcon("send", __iconNode$L);
81947
82042
 
81948
82043
  /**
81949
82044
  * @license lucide-react v0.528.0 - ISC
@@ -81953,13 +82048,13 @@ const Send = createLucideIcon("send", __iconNode$K);
81953
82048
  */
81954
82049
 
81955
82050
 
81956
- const __iconNode$J = [
82051
+ const __iconNode$K = [
81957
82052
  ["rect", { width: "20", height: "8", x: "2", y: "2", rx: "2", ry: "2", key: "ngkwjq" }],
81958
82053
  ["rect", { width: "20", height: "8", x: "2", y: "14", rx: "2", ry: "2", key: "iecqi9" }],
81959
82054
  ["line", { x1: "6", x2: "6.01", y1: "6", y2: "6", key: "16zg32" }],
81960
82055
  ["line", { x1: "6", x2: "6.01", y1: "18", y2: "18", key: "nzw8ys" }]
81961
82056
  ];
81962
- const Server = createLucideIcon("server", __iconNode$J);
82057
+ const Server = createLucideIcon("server", __iconNode$K);
81963
82058
 
81964
82059
  /**
81965
82060
  * @license lucide-react v0.528.0 - ISC
@@ -81969,13 +82064,13 @@ const Server = createLucideIcon("server", __iconNode$J);
81969
82064
  */
81970
82065
 
81971
82066
 
81972
- const __iconNode$I = [
82067
+ const __iconNode$J = [
81973
82068
  ["path", { d: "M14 17H5", key: "gfn3mx" }],
81974
82069
  ["path", { d: "M19 7h-9", key: "6i9tg" }],
81975
82070
  ["circle", { cx: "17", cy: "17", r: "3", key: "18b49y" }],
81976
82071
  ["circle", { cx: "7", cy: "7", r: "3", key: "dfmy0x" }]
81977
82072
  ];
81978
- const Settings2 = createLucideIcon("settings-2", __iconNode$I);
82073
+ const Settings2 = createLucideIcon("settings-2", __iconNode$J);
81979
82074
 
81980
82075
  /**
81981
82076
  * @license lucide-react v0.528.0 - ISC
@@ -81985,7 +82080,7 @@ const Settings2 = createLucideIcon("settings-2", __iconNode$I);
81985
82080
  */
81986
82081
 
81987
82082
 
81988
- const __iconNode$H = [
82083
+ const __iconNode$I = [
81989
82084
  [
81990
82085
  "path",
81991
82086
  {
@@ -81995,7 +82090,7 @@ const __iconNode$H = [
81995
82090
  ],
81996
82091
  ["circle", { cx: "12", cy: "12", r: "3", key: "1v7zrd" }]
81997
82092
  ];
81998
- const Settings = createLucideIcon("settings", __iconNode$H);
82093
+ const Settings = createLucideIcon("settings", __iconNode$I);
81999
82094
 
82000
82095
  /**
82001
82096
  * @license lucide-react v0.528.0 - ISC
@@ -82005,14 +82100,14 @@ const Settings = createLucideIcon("settings", __iconNode$H);
82005
82100
  */
82006
82101
 
82007
82102
 
82008
- const __iconNode$G = [
82103
+ const __iconNode$H = [
82009
82104
  ["circle", { cx: "18", cy: "5", r: "3", key: "gq8acd" }],
82010
82105
  ["circle", { cx: "6", cy: "12", r: "3", key: "w7nqdw" }],
82011
82106
  ["circle", { cx: "18", cy: "19", r: "3", key: "1xt0gg" }],
82012
82107
  ["line", { x1: "8.59", x2: "15.42", y1: "13.51", y2: "17.49", key: "47mynk" }],
82013
82108
  ["line", { x1: "15.41", x2: "8.59", y1: "6.51", y2: "10.49", key: "1n3mei" }]
82014
82109
  ];
82015
- const Share2 = createLucideIcon("share-2", __iconNode$G);
82110
+ const Share2 = createLucideIcon("share-2", __iconNode$H);
82016
82111
 
82017
82112
  /**
82018
82113
  * @license lucide-react v0.528.0 - ISC
@@ -82022,7 +82117,7 @@ const Share2 = createLucideIcon("share-2", __iconNode$G);
82022
82117
  */
82023
82118
 
82024
82119
 
82025
- const __iconNode$F = [
82120
+ const __iconNode$G = [
82026
82121
  [
82027
82122
  "path",
82028
82123
  {
@@ -82033,7 +82128,7 @@ const __iconNode$F = [
82033
82128
  ["path", { d: "M12 8v4", key: "1got3b" }],
82034
82129
  ["path", { d: "M12 16h.01", key: "1drbdi" }]
82035
82130
  ];
82036
- const ShieldAlert = createLucideIcon("shield-alert", __iconNode$F);
82131
+ const ShieldAlert = createLucideIcon("shield-alert", __iconNode$G);
82037
82132
 
82038
82133
  /**
82039
82134
  * @license lucide-react v0.528.0 - ISC
@@ -82043,7 +82138,7 @@ const ShieldAlert = createLucideIcon("shield-alert", __iconNode$F);
82043
82138
  */
82044
82139
 
82045
82140
 
82046
- const __iconNode$E = [
82141
+ const __iconNode$F = [
82047
82142
  [
82048
82143
  "path",
82049
82144
  {
@@ -82053,7 +82148,7 @@ const __iconNode$E = [
82053
82148
  ],
82054
82149
  ["path", { d: "m9 12 2 2 4-4", key: "dzmm74" }]
82055
82150
  ];
82056
- const ShieldCheck = createLucideIcon("shield-check", __iconNode$E);
82151
+ const ShieldCheck = createLucideIcon("shield-check", __iconNode$F);
82057
82152
 
82058
82153
  /**
82059
82154
  * @license lucide-react v0.528.0 - ISC
@@ -82063,7 +82158,7 @@ const ShieldCheck = createLucideIcon("shield-check", __iconNode$E);
82063
82158
  */
82064
82159
 
82065
82160
 
82066
- const __iconNode$D = [
82161
+ const __iconNode$E = [
82067
82162
  [
82068
82163
  "path",
82069
82164
  {
@@ -82072,7 +82167,7 @@ const __iconNode$D = [
82072
82167
  }
82073
82168
  ]
82074
82169
  ];
82075
- const Shield = createLucideIcon("shield", __iconNode$D);
82170
+ const Shield = createLucideIcon("shield", __iconNode$E);
82076
82171
 
82077
82172
  /**
82078
82173
  * @license lucide-react v0.528.0 - ISC
@@ -82082,7 +82177,7 @@ const Shield = createLucideIcon("shield", __iconNode$D);
82082
82177
  */
82083
82178
 
82084
82179
 
82085
- const __iconNode$C = [
82180
+ const __iconNode$D = [
82086
82181
  ["path", { d: "M16 10a4 4 0 0 1-8 0", key: "1ltviw" }],
82087
82182
  ["path", { d: "M3.103 6.034h17.794", key: "awc11p" }],
82088
82183
  [
@@ -82093,7 +82188,7 @@ const __iconNode$C = [
82093
82188
  }
82094
82189
  ]
82095
82190
  ];
82096
- const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$C);
82191
+ const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$D);
82097
82192
 
82098
82193
  /**
82099
82194
  * @license lucide-react v0.528.0 - ISC
@@ -82103,14 +82198,14 @@ const ShoppingBag = createLucideIcon("shopping-bag", __iconNode$C);
82103
82198
  */
82104
82199
 
82105
82200
 
82106
- const __iconNode$B = [
82201
+ const __iconNode$C = [
82107
82202
  ["path", { d: "m18 14 4 4-4 4", key: "10pe0f" }],
82108
82203
  ["path", { d: "m18 2 4 4-4 4", key: "pucp1d" }],
82109
82204
  ["path", { d: "M2 18h1.973a4 4 0 0 0 3.3-1.7l5.454-8.6a4 4 0 0 1 3.3-1.7H22", key: "1ailkh" }],
82110
82205
  ["path", { d: "M2 6h1.972a4 4 0 0 1 3.6 2.2", key: "km57vx" }],
82111
82206
  ["path", { d: "M22 18h-6.041a4 4 0 0 1-3.3-1.8l-.359-.45", key: "os18l9" }]
82112
82207
  ];
82113
- const Shuffle = createLucideIcon("shuffle", __iconNode$B);
82208
+ const Shuffle = createLucideIcon("shuffle", __iconNode$C);
82114
82209
 
82115
82210
  /**
82116
82211
  * @license lucide-react v0.528.0 - ISC
@@ -82120,7 +82215,7 @@ const Shuffle = createLucideIcon("shuffle", __iconNode$B);
82120
82215
  */
82121
82216
 
82122
82217
 
82123
- const __iconNode$A = [
82218
+ const __iconNode$B = [
82124
82219
  ["line", { x1: "21", x2: "14", y1: "4", y2: "4", key: "obuewd" }],
82125
82220
  ["line", { x1: "10", x2: "3", y1: "4", y2: "4", key: "1q6298" }],
82126
82221
  ["line", { x1: "21", x2: "12", y1: "12", y2: "12", key: "1iu8h1" }],
@@ -82131,7 +82226,7 @@ const __iconNode$A = [
82131
82226
  ["line", { x1: "8", x2: "8", y1: "10", y2: "14", key: "1i6ji0" }],
82132
82227
  ["line", { x1: "16", x2: "16", y1: "18", y2: "22", key: "1lctlv" }]
82133
82228
  ];
82134
- const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$A);
82229
+ const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$B);
82135
82230
 
82136
82231
  /**
82137
82232
  * @license lucide-react v0.528.0 - ISC
@@ -82141,11 +82236,11 @@ const SlidersHorizontal = createLucideIcon("sliders-horizontal", __iconNode$A);
82141
82236
  */
82142
82237
 
82143
82238
 
82144
- const __iconNode$z = [
82239
+ const __iconNode$A = [
82145
82240
  ["rect", { width: "14", height: "20", x: "5", y: "2", rx: "2", ry: "2", key: "1yt0o3" }],
82146
82241
  ["path", { d: "M12 18h.01", key: "mhygvu" }]
82147
82242
  ];
82148
- const Smartphone = createLucideIcon("smartphone", __iconNode$z);
82243
+ const Smartphone = createLucideIcon("smartphone", __iconNode$A);
82149
82244
 
82150
82245
  /**
82151
82246
  * @license lucide-react v0.528.0 - ISC
@@ -82155,7 +82250,7 @@ const Smartphone = createLucideIcon("smartphone", __iconNode$z);
82155
82250
  */
82156
82251
 
82157
82252
 
82158
- const __iconNode$y = [
82253
+ const __iconNode$z = [
82159
82254
  [
82160
82255
  "path",
82161
82256
  {
@@ -82167,7 +82262,22 @@ const __iconNode$y = [
82167
82262
  ["path", { d: "M22 4h-4", key: "gwowj6" }],
82168
82263
  ["circle", { cx: "4", cy: "20", r: "2", key: "6kqj1y" }]
82169
82264
  ];
82170
- const Sparkles = createLucideIcon("sparkles", __iconNode$y);
82265
+ const Sparkles = createLucideIcon("sparkles", __iconNode$z);
82266
+
82267
+ /**
82268
+ * @license lucide-react v0.528.0 - ISC
82269
+ *
82270
+ * This source code is licensed under the ISC license.
82271
+ * See the LICENSE file in the root directory of this source tree.
82272
+ */
82273
+
82274
+
82275
+ const __iconNode$y = [
82276
+ ["path", { d: "M21 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h6", key: "y09zxi" }],
82277
+ ["path", { d: "m21 3-9 9", key: "mpx6sq" }],
82278
+ ["path", { d: "M15 3h6v6", key: "1q9fwt" }]
82279
+ ];
82280
+ const SquareArrowOutUpRight = createLucideIcon("square-arrow-out-up-right", __iconNode$y);
82171
82281
 
82172
82282
  /**
82173
82283
  * @license lucide-react v0.528.0 - ISC
@@ -148919,6 +149029,151 @@ function ChatPrivacyTab({ org, username }) {
148919
149029
 
148920
149030
  function c(e,u,c){var i=this,a=useRef(null),o=useRef(0),f=useRef(null),l=useRef([]),v=useRef(),m=useRef(),d=useRef(e),g=useRef(true);d.current=e;var p="undefined"!=typeof window,w=!u&&0!==u&&p;if("function"!=typeof e)throw new TypeError("Expected a function");u=+u||0;var s=!!(c=c||{}).leading,x=!("trailing"in c)||!!c.trailing,h="maxWait"in c,y="debounceOnServer"in c&&!!c.debounceOnServer,F=h?Math.max(+c.maxWait||0,u):null;useEffect(function(){return g.current=true,function(){g.current=false;}},[]);var A=useMemo(function(){var r=function(r){var n=l.current,t=v.current;return l.current=v.current=null,o.current=r,m.current=d.current.apply(t,n)},n=function(r,n){w&&cancelAnimationFrame(f.current),f.current=w?requestAnimationFrame(r):setTimeout(r,n);},t=function(r){if(!g.current)return false;var n=r-a.current;return !a.current||n>=u||n<0||h&&r-o.current>=F},e=function(n){return f.current=null,x&&l.current?r(n):(l.current=v.current=null,m.current)},c=function r(){var c=Date.now();if(t(c))return e(c);if(g.current){var i=u-(c-a.current),f=h?Math.min(i,F-(c-o.current)):i;n(r,f);}},A=function(){if(p||y){var e=Date.now(),d=t(e);if(l.current=[].slice.call(arguments),v.current=i,a.current=e,d){if(!f.current&&g.current)return o.current=a.current,n(c,u),s?r(a.current):m.current;if(h)return n(c,u),r(a.current)}return f.current||n(c,u),m.current}};return A.cancel=function(){f.current&&(w?cancelAnimationFrame(f.current):clearTimeout(f.current)),o.current=0,l.current=a.current=v.current=f.current=null;},A.isPending=function(){return !!f.current},A.flush=function(){return f.current?e(Date.now()):m.current},A},[s,h,u,F,x,w,p,y]);return A}function i$1(r,n){return r===n}function a(n,t,a){var o=i$1,f=useRef(n),l=useState({})[1],v=c(useCallback(function(r){f.current=r,l({});},[l]),t,a),m=useRef(n);return o(m.current,n)||(v(n),m.current=n),[f.current,v]}
148921
149031
 
149032
+ var _a;
149033
+ /**
149034
+ * One context object for every copy of this module. The SDK ships several
149035
+ * bundles (`index`, `next`, …) that each inline their own copy of this file,
149036
+ * so a host provider from one bundle would never reach a link rendered by
149037
+ * another (the profile modal comes from `next`; Transcripts from `index`).
149038
+ * Registering the context on `globalThis` under a well-known symbol makes
149039
+ * the copies share it — React is a single external instance, so the object
149040
+ * is interchangeable between them.
149041
+ */
149042
+ const CONTEXT_KEY = Symbol.for('@iblai/web-containers/agent-settings-launcher');
149043
+ const registry = globalThis;
149044
+ const AgentSettingsLauncherContext = (_a = registry[CONTEXT_KEY]) !== null && _a !== void 0 ? _a : (registry[CONTEXT_KEY] = React__default.createContext(null));
149045
+ /**
149046
+ * Lets a host say how an agent's settings open — the same dialog its nav bar
149047
+ * opens — so every SDK surface that names an agent (Transcripts, the profile
149048
+ * History tab) can link the name to it. Without a provider the names are
149049
+ * plain text, which is right for hosts with no agent settings at all.
149050
+ */
149051
+ function AgentSettingsLauncherProvider({ value, children, }) {
149052
+ return (jsx(AgentSettingsLauncherContext.Provider, { value: value, children: children }));
149053
+ }
149054
+ function useAgentSettingsLauncher() {
149055
+ return React__default.useContext(AgentSettingsLauncherContext);
149056
+ }
149057
+ /**
149058
+ * An agent's name, linked to its settings where the host lets this viewer
149059
+ * open them; plain text otherwise. Truncates inside an `inline-flex` box so
149060
+ * it keeps the baseline of the label beside it, and neither its clicks nor
149061
+ * its key presses reach a clickable row around it.
149062
+ */
149063
+ function AgentSettingsLink({ uniqueId, name, fallback = '-', className, testId, }) {
149064
+ var _a, _b;
149065
+ const t = useT();
149066
+ const launcher = useAgentSettingsLauncher();
149067
+ const display = name || uniqueId || fallback;
149068
+ const target = uniqueId ? { uniqueId, name: name || uniqueId } : null;
149069
+ const canOpen = !!launcher && !!target && ((_b = (_a = launcher.canOpenAgentSettings) === null || _a === void 0 ? void 0 : _a.call(launcher, target)) !== null && _b !== void 0 ? _b : true);
149070
+ if (!canOpen || !target) {
149071
+ return (jsx("span", { className: cn('inline-flex max-w-full', className), "data-testid": testId, children: jsx("span", { className: "min-w-0 truncate", children: display }) }));
149072
+ }
149073
+ return (jsx("button", { type: "button", onClick: (event) => {
149074
+ event.stopPropagation();
149075
+ launcher.openAgentSettings(target);
149076
+ },
149077
+ // Rows that open on Enter/Space would otherwise swallow the key press.
149078
+ onKeyDown: (event) => event.stopPropagation(), className: cn('inline-flex max-w-full cursor-pointer text-left hover:text-blue-600 hover:underline focus:text-blue-600 focus:outline-none', className), "aria-label": t('agentSettingsLink.openSettings', { name: display }), "data-testid": testId, children: jsx("span", { className: "min-w-0 truncate", children: display }) }));
149079
+ }
149080
+
149081
+ /**
149082
+ * A conversation's sentiment the way Analytics → Transcripts shows it: a
149083
+ * thumb and "<Sentiment> User Sentiment" — green when positive, blue when
149084
+ * negative, grey otherwise. Renders nothing when the record carries none.
149085
+ */
149086
+ function ConversationSentiment({ sentiment, labels, className, compact = false, }) {
149087
+ const key = (sentiment !== null && sentiment !== void 0 ? sentiment : '').trim().toLowerCase();
149088
+ if (!key)
149089
+ return null;
149090
+ const Icon = key === 'negative' ? ThumbsDown : ThumbsUp;
149091
+ const tone = key === 'negative' ? 'text-blue-600' : key === 'positive' ? 'text-green-600' : 'text-gray-600';
149092
+ const word = key === 'negative'
149093
+ ? labels.negative
149094
+ : key === 'positive'
149095
+ ? labels.positive
149096
+ : key === 'neutral'
149097
+ ? labels.neutral
149098
+ : key.charAt(0).toUpperCase() + key.slice(1);
149099
+ const text = `${word} ${labels.userSentiment}`;
149100
+ if (compact) {
149101
+ return (jsx(TooltipProvider, { children: jsxs(Tooltip$1, { children: [jsx(TooltipTrigger, { asChild: true, children: jsxs("span", { className: cn('inline-flex cursor-default items-center', tone, className), "data-testid": "conversation-sentiment", "data-sentiment": key, "data-compact": "true", tabIndex: 0, children: [jsx(Icon, { className: "h-4 w-4", "aria-hidden": "true" }), jsx("span", { className: "sr-only", children: text })] }) }), jsx(TooltipContent, { className: "ibl-tooltip-content", children: text })] }) }));
149102
+ }
149103
+ return (jsxs("div", { className: cn('flex items-center gap-1 text-sm', tone, className), "data-testid": "conversation-sentiment", "data-sentiment": key, children: [jsx(Icon, { className: "h-4 w-4", "aria-hidden": "true" }), jsxs("span", { children: [word, " ", labels.userSentiment] })] }));
149104
+ }
149105
+
149106
+ /**
149107
+ * A conversation's topic names, whatever shape the endpoint uses: analytics
149108
+ * returns `["Biology"]`, the chat-history endpoints `[{ name: "Biology" }]`.
149109
+ * Blank entries are dropped and repeats collapsed; order is kept.
149110
+ */
149111
+ function conversationTopics(topics) {
149112
+ if (!Array.isArray(topics))
149113
+ return [];
149114
+ const names = [];
149115
+ for (const topic of topics) {
149116
+ const raw = typeof topic === 'string'
149117
+ ? topic
149118
+ : topic && typeof topic === 'object'
149119
+ ? topic.name
149120
+ : undefined;
149121
+ const name = typeof raw === 'string' ? raw.trim() : '';
149122
+ if (name && !names.includes(name))
149123
+ names.push(name);
149124
+ }
149125
+ return names;
149126
+ }
149127
+
149128
+ /** A conversation's topics as the chips Analytics → Transcripts draws. */
149129
+ function ConversationTopics({ topics, className, children, leading, }) {
149130
+ const names = conversationTopics(topics);
149131
+ if (names.length === 0 && !children && !leading)
149132
+ return null;
149133
+ return (jsxs("div", { className: cn('flex flex-wrap items-center gap-2', className), "data-testid": "conversation-topics", children: [leading, names.map((name) => (jsx("span", { className: "rounded-[5px] bg-gray-100 px-3 py-1 text-xs text-gray-600", children: name }, name))), children] }));
149134
+ }
149135
+
149136
+ const clean$1 = (value) => typeof value === 'string' && value.trim() ? value.trim() : undefined;
149137
+ /** The first human turn of a conversation, from an array or its JSON string form. */
149138
+ function firstHumanMessage(messages) {
149139
+ let turns = messages;
149140
+ if (typeof turns === 'string') {
149141
+ try {
149142
+ turns = JSON.parse(turns);
149143
+ }
149144
+ catch (_a) {
149145
+ return undefined;
149146
+ }
149147
+ }
149148
+ if (!Array.isArray(turns))
149149
+ return undefined;
149150
+ const first = turns[0];
149151
+ return clean$1(first === null || first === void 0 ? void 0 : first.human);
149152
+ }
149153
+ /**
149154
+ * One title for a conversation, on every surface: the backend's `title` when
149155
+ * it has one, else `first_user_message`, else the first human turn, else the
149156
+ * caller's fallback label. Endpoints differ in which of these they return;
149157
+ * this keeps Transcripts and both History tabs naming a conversation alike.
149158
+ */
149159
+ function conversationTitle(source, fallback) {
149160
+ var _a, _b, _c;
149161
+ return ((_c = (_b = (_a = clean$1(source === null || source === void 0 ? void 0 : source.title)) !== null && _a !== void 0 ? _a : clean$1(source === null || source === void 0 ? void 0 : source.first_user_message)) !== null && _b !== void 0 ? _b : firstHumanMessage(source === null || source === void 0 ? void 0 : source.messages)) !== null && _c !== void 0 ? _c : fallback);
149162
+ }
149163
+
149164
+ /**
149165
+ * A conversation's timestamp the way every history surface shows it:
149166
+ * "Sep 4, 2026, 3:56 PM · 21 days ago". Empty for a missing or invalid value.
149167
+ */
149168
+ const formatSessionDate = (value) => {
149169
+ if (!value)
149170
+ return '';
149171
+ const date = new Date(value);
149172
+ if (Number.isNaN(date.getTime()))
149173
+ return '';
149174
+ return `${format$1(date, 'MMM d, yyyy, h:mm a')} · ${formatDistanceToNow(date, { addSuffix: true })}`;
149175
+ };
149176
+
148922
149177
  const offsetFormatCache = {};
148923
149178
  const offsetCache = {};
148924
149179
 
@@ -188019,14 +188274,6 @@ function stripMarkdown(text) {
188019
188274
  * When a conversation happened: the calendar date and time, followed by the
188020
188275
  * relative "x ago" so both the exact day and recency read at a glance.
188021
188276
  */
188022
- const formatSessionDate = (value) => {
188023
- if (!value)
188024
- return '';
188025
- const date = new Date(value);
188026
- if (Number.isNaN(date.getTime()))
188027
- return '';
188028
- return `${format$1(date, 'MMM d, yyyy, h:mm a')} · ${formatDistanceToNow(date, { addSuffix: true })}`;
188029
- };
188030
188277
  /**
188031
188278
  * The list endpoint may serialize `messages` as a JSON string while the detail
188032
188279
  * endpoint returns a proper array; accept either shape.
@@ -188073,11 +188320,6 @@ function downloadTextFile(filename, content, mime) {
188073
188320
  document.body.removeChild(link);
188074
188321
  URL.revokeObjectURL(blobUrl);
188075
188322
  }
188076
- const SENTIMENT_CLASSES = {
188077
- positive: 'bg-green-100 text-green-800 border-transparent',
188078
- negative: 'bg-red-100 text-red-800 border-transparent',
188079
- neutral: 'bg-gray-100 text-gray-600 border-transparent',
188080
- };
188081
188323
  /**
188082
188324
  * Agent scope filter — the same inline searchable autocomplete the Billing
188083
188325
  * tab's Agent Limits section and the Memory tab use (`SearchSelect`): type to
@@ -188141,7 +188383,7 @@ function ConversationMessages({ messages, username, agent, fallbackEmail, }) {
188141
188383
  name: file.name,
188142
188384
  contentType: file.content_type,
188143
188385
  url: file.url,
188144
- })) })] })] }), jsxs("div", { className: "flex items-start gap-3 border-t border-gray-200 pt-4", children: [jsx(AgentMessageAvatar, { agent: agent, fallback: t('chatHistoryChatHistoryTab.aiAvatarLabel') }), jsxs("div", { className: "min-w-0 flex-1 overflow-x-hidden", children: [jsx("div", { className: "font-medium text-gray-700", children: agent.name }), jsx(Markdown, { className: "mt-1 text-sm text-gray-500", children: (_c = message.ai) !== null && _c !== void 0 ? _c : '' })] })] })] }, index));
188386
+ })) })] })] }), jsxs("div", { className: "flex items-start gap-3 border-t border-gray-200 pt-4", children: [jsx(AgentMessageAvatar, { agent: agent, fallback: t('chatHistoryChatHistoryTab.aiAvatarLabel') }), jsxs("div", { className: "min-w-0 flex-1 overflow-x-hidden", children: [jsx(AgentSettingsLink, { uniqueId: agent.uniqueId, name: agent.name, className: "font-medium text-gray-700" }), jsx(Markdown, { className: "mt-1 text-sm text-gray-500", children: (_c = message.ai) !== null && _c !== void 0 ? _c : '' })] })] })] }, index));
188145
188387
  }) }));
188146
188388
  }
188147
188389
  /**
@@ -188150,12 +188392,11 @@ function ConversationMessages({ messages, username, agent, fallbackEmail, }) {
188150
188392
  * download of just this conversation.
188151
188393
  */
188152
188394
  function ConversationPreview({ org, username, session, agent, }) {
188153
- var _a;
188154
188395
  const t = useT();
188155
188396
  const inlineMessages = normalizeMessages(session.messages);
188156
188397
  const { data: detail, isLoading } = useGetUserChatHistorySessionQuery({ org, userId: username, sessionId: session.id }, { skip: inlineMessages.length > 0 });
188157
188398
  const messages = inlineMessages.length > 0 ? inlineMessages : normalizeMessages(detail === null || detail === void 0 ? void 0 : detail.messages);
188158
- const title = stripMarkdown(session.title || ((_a = messages[0]) === null || _a === void 0 ? void 0 : _a.human) || t('chatHistoryChatHistoryTab.conversation'));
188399
+ const title = stripMarkdown(conversationTitle({ title: session.title, first_user_message: session.first_user_message, messages }, t('chatHistoryChatHistoryTab.conversation')));
188159
188400
  if (isLoading) {
188160
188401
  return (jsx("div", { className: "flex items-center justify-center py-10", children: jsx(Spinner, {}) }));
188161
188402
  }
@@ -188192,6 +188433,7 @@ function ChatHistoryTab({ org, username }) {
188192
188433
  var _a;
188193
188434
  const known = agentInfo[session.mentor];
188194
188435
  return {
188436
+ uniqueId: session.mentor || undefined,
188195
188437
  name: session.mentor_name ||
188196
188438
  (known === null || known === void 0 ? void 0 : known.name) ||
188197
188439
  ((_a = filters.agent) === null || _a === void 0 ? void 0 : _a.name) ||
@@ -188204,6 +188446,12 @@ function ChatHistoryTab({ org, username }) {
188204
188446
  const sentimentOptions = ((_a = filterOptions === null || filterOptions === void 0 ? void 0 : filterOptions.sentiment) === null || _a === void 0 ? void 0 : _a.length)
188205
188447
  ? filterOptions.sentiment
188206
188448
  : DEFAULT_SENTIMENTS;
188449
+ const sentimentLabels = React__default.useMemo(() => ({
188450
+ positive: t('chatHistoryChatHistoryTab.positive'),
188451
+ neutral: t('chatHistoryChatHistoryTab.neutral'),
188452
+ negative: t('chatHistoryChatHistoryTab.negative'),
188453
+ userSentiment: t('chatHistoryChatHistoryTab.userSentiment'),
188454
+ }), [t]);
188207
188455
  const sentimentLabel = React__default.useCallback((value) => {
188208
188456
  const key = value.toLowerCase();
188209
188457
  if (key === 'positive')
@@ -188227,22 +188475,18 @@ function ChatHistoryTab({ org, username }) {
188227
188475
  : t('chatHistoryChatHistoryTab.export')] }) })] }) }), isLoading && (jsx("div", { className: "flex w-full flex-1 items-center justify-center py-10", children: jsx(Spinner, {}) })), isError && !isLoading && (jsx("div", { className: "flex flex-1 flex-col items-center justify-center py-6", children: jsx("p", { className: "text-sm text-gray-600", children: isForbidden
188228
188476
  ? t('chatHistoryChatHistoryTab.forbidden')
188229
188477
  : t('chatHistoryChatHistoryTab.loadFailed') }) })), sessions.length === 0 && !isLoading && !isError && (jsx("div", { className: "flex flex-1 flex-col items-center justify-center py-6", children: jsx("p", { className: "text-sm text-gray-600", children: t('chatHistoryChatHistoryTab.noConversations') }) })), sessions.length > 0 && (jsxs("div", { className: "grid min-h-[320px] flex-1 grid-cols-1 gap-6 md:grid-cols-2", children: [jsxs("div", { className: "col-span-full flex min-h-0 flex-col gap-3 md:col-span-1", children: [jsx("div", { className: "scrollbar-hide min-h-0 flex-1 overflow-y-auto rounded-md border border-neutral-200", tabIndex: 0, role: "region", "aria-label": t('chatHistoryChatHistoryTab.conversationListLabel'), children: sessions.map((session) => {
188230
- var _a, _b, _c, _d, _e;
188478
+ var _a;
188231
188479
  const firstMessage = normalizeMessages(session.messages)[0];
188232
- const title = stripMarkdown(session.title ||
188233
- (firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.human) ||
188234
- session.first_user_message ||
188235
- t('chatHistoryChatHistoryTab.conversation'));
188480
+ const title = stripMarkdown(conversationTitle(session, t('chatHistoryChatHistoryTab.conversation')));
188236
188481
  const preview = stripMarkdown((_a = firstMessage === null || firstMessage === void 0 ? void 0 : firstMessage.ai) !== null && _a !== void 0 ? _a : '');
188237
- const sentiment = (_c = (_b = session.sentiment) === null || _b === void 0 ? void 0 : _b.toLowerCase()) !== null && _c !== void 0 ? _c : '';
188238
188482
  return (jsxs("div", { role: "button", tabIndex: 0, "data-testid": "history-conversation-row", "data-session-id": session.id, className: cn('flex cursor-pointer items-center justify-between border-b border-neutral-200 p-4 last:border-b-0', (selectedSession === null || selectedSession === void 0 ? void 0 : selectedSession.id) === session.id ? 'bg-gray-100' : 'hover:bg-gray-50'), onClick: () => handleConversationClick(session), onKeyDown: (event) => {
188239
188483
  if (event.key === 'Enter' || event.key === ' ') {
188240
188484
  event.preventDefault();
188241
188485
  handleConversationClick(session);
188242
188486
  }
188243
- }, children: [jsxs("div", { className: "w-full", children: [jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [jsxs("span", { className: "flex items-center gap-2 text-sm text-gray-600", children: [formatSessionDate(session.inserted_at), sentiment && (jsx(Badge, { variant: "outline", className: cn('font-normal', (_d = SENTIMENT_CLASSES[sentiment]) !== null && _d !== void 0 ? _d : SENTIMENT_CLASSES.neutral), children: sentimentLabel((_e = session.sentiment) !== null && _e !== void 0 ? _e : '') }))] }), jsx("span", { className: "max-w-[100px] truncate text-sm text-gray-900 sm:max-w-[200px]", children: resolveAgent(session).name })] }), jsx("div", { className: "font-medium text-gray-900", children: textTruncate(title, 50) }), preview && (jsx("p", { className: "line-clamp-1 text-sm text-gray-600", children: textTruncate(preview, 60) }))] }), jsx("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: jsx(ChevronRight, { className: "h-4 w-4" }) })] }, session.id));
188487
+ }, children: [jsxs("div", { className: "w-full", children: [jsxs("div", { className: "mb-2 flex items-center justify-between gap-2", children: [jsx("span", { className: "shrink-0 text-sm text-gray-600", children: formatSessionDate(session.inserted_at) }), jsx(AgentSettingsLink, { uniqueId: resolveAgent(session).uniqueId, name: resolveAgent(session).name, className: "min-w-0 text-right text-sm text-gray-900" })] }), jsx("div", { className: "font-medium text-gray-900", children: textTruncate(title, 50) }), jsx(ConversationTopics, { topics: session.topics, className: "mt-1", leading: jsx(ConversationSentiment, { sentiment: session.sentiment, labels: sentimentLabels, compact: true }) }), preview && (jsx("p", { className: "line-clamp-1 text-sm text-gray-600", children: textTruncate(preview, 60) }))] }), jsx("div", { className: "flex items-center gap-2 text-sm text-gray-600", children: jsx(ChevronRight, { className: "h-4 w-4" }) })] }, session.id));
188244
188488
  }) }), totalPages > 1 && (jsx("div", { className: "flex-shrink-0", children: jsx(IblPagination, { currentPage: page, totalPages: totalPages, onPageChange: setPage, disabled: isFetching || isLoading, disableNumberedButtons: isMobile }) }))] }), jsx("div", { className: "scrollbar-hide hidden min-h-0 flex-col overflow-y-auto rounded-lg border border-neutral-200 bg-white p-6 shadow-sm md:flex", tabIndex: 0, role: "region", "aria-label": t('chatHistoryChatHistoryTab.conversationPreviewLabel'), children: selectedSession ? (jsx(ConversationPreview, { org: org, username: username, session: selectedSession, agent: resolveAgent(selectedSession) })) : (jsx("div", { className: "flex h-full items-center justify-center text-gray-500", children: t('chatHistoryChatHistoryTab.selectPrompt') })) })] })), jsx(Dialog, { open: isPreviewModalOpen, onOpenChange: setIsPreviewModalOpen, children: jsxs(DialogContent, { className: "scrollbar-hide mx-auto max-h-[80vh] max-w-[90vw] overflow-x-hidden overflow-y-auto", children: [jsx(DialogHeader, { children: jsx(DialogTitle, { className: "text-lg font-semibold text-gray-900", children: selectedSession
188245
- ? stripMarkdown(selectedSession.title || t('chatHistoryChatHistoryTab.conversation'))
188489
+ ? stripMarkdown(conversationTitle(selectedSession, t('chatHistoryChatHistoryTab.conversation')))
188246
188490
  : t('chatHistoryChatHistoryTab.conversation') }) }), jsx("div", { className: "mx-auto max-w-full overflow-x-hidden", children: selectedSession && (jsx(ConversationPreview, { org: org, username: username, session: selectedSession, agent: resolveAgent(selectedSession) })) })] }) })] }), jsx(TabsContent, { value: "exports", className: "mt-0 min-h-0 flex-1 overflow-y-auto data-[state=inactive]:hidden", children: jsx(ReportHistory, { org: org, username: username, onDownload: downloadFromUrl }) })] }));
188247
188491
  }
188248
188492
 
@@ -190626,6 +190870,201 @@ function InvitedUsersDialog({ tenant, onClose }) {
190626
190870
  }, children: jsx(DialogPortal, { forceMount: true, children: jsxs(DialogContent, { "aria-label": t('profileInvitedUsers.dialogAriaLabel'), className: "max-w-sm rounded-2xl px-6 py-8 pointer-events-auto", "aria-describedby": "invited-users-dialog", children: [jsx(DialogHeader, { className: "relative flex-row justify-between", children: jsx(DialogTitle, { className: "text-blue-600 text-xl font-semibold", children: t('profileInvitedUsers.title') }) }), jsxs("div", { className: "mt-4 space-y-1", children: [jsx("p", { className: "text-gray-500 text-sm", children: t('profileInvitedUsers.pendingDescription') }), jsx("form", { children: jsx(Input, { value: query, onChange: (event) => setQuery(event.target.value), placeholder: t('profileInvitedUsers.searchPlaceholder'), className: "mt-2" }) })] }), jsxs("div", { children: [jsx("h2", { className: "text-md text-gray-600 font-semibold mb-4", children: t('profileInvitedUsers.emailHeading') }), invitedUsers === null || invitedUsers === void 0 ? void 0 : invitedUsers.results.map((user) => (jsx("div", { className: "border-b-gray-50 pb-2 mb-4 text-sm text-gray-600 dark:text-gray-400", children: user.email }, user.id))), (invitedUsers === null || invitedUsers === void 0 ? void 0 : invitedUsers.results.length) === 0 && (jsx("p", { className: "text-gray", children: t('profileInvitedUsers.noRecords') }))] })] }) }) }));
190627
190871
  }
190628
190872
 
190873
+ /**
190874
+ * Whether, and how, a retrieved document can be shown inside the app.
190875
+ *
190876
+ * The Datasets tab accepts PDFs, Office files, CSV/TXT/Markdown, images,
190877
+ * audio, video, ZIPs, GitHub repos, YouTube videos, web pages and crawls, and
190878
+ * links to Google Drive, OneDrive and Dropbox. Only some of those a browser
190879
+ * can render on its own; the rest get no Preview button rather than a blank
190880
+ * frame. Decided from the source URL (extension and host) and, when the
190881
+ * backend sends one, the document's kind.
190882
+ */
190883
+ const IMAGE = new Set(['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp', 'avif']);
190884
+ const AUDIO = new Set(['mp3', 'wav', 'ogg', 'oga', 'm4a', 'aac', 'flac']);
190885
+ const VIDEO = new Set(['mp4', 'webm', 'ogv', 'mov', 'm4v']);
190886
+ /** Browsers cannot render these; a frame would only offer a download. */
190887
+ const NOT_VIEWABLE = new Set([
190888
+ 'doc',
190889
+ 'docx',
190890
+ 'ppt',
190891
+ 'pptx',
190892
+ 'xls',
190893
+ 'xlsx',
190894
+ 'odt',
190895
+ 'odp',
190896
+ 'ods',
190897
+ 'rtf',
190898
+ 'zip',
190899
+ 'rar',
190900
+ '7z',
190901
+ 'tar',
190902
+ 'gz',
190903
+ 'tgz',
190904
+ ]);
190905
+ /** Hosts that refuse to be framed, or need the viewer's own sign-in. */
190906
+ const UNFRAMEABLE_HOSTS = [
190907
+ 'github.com',
190908
+ 'dropbox.com',
190909
+ 'onedrive.live.com',
190910
+ '1drv.ms',
190911
+ 'sharepoint.com',
190912
+ ];
190913
+ const hostMatches = (host, domain) => host === domain || host.endsWith(`.${domain}`);
190914
+ const extensionOf = (pathname) => {
190915
+ var _a;
190916
+ const last = (_a = pathname.split('/').pop()) !== null && _a !== void 0 ? _a : '';
190917
+ const dot = last.lastIndexOf('.');
190918
+ return dot > 0 ? last.slice(dot + 1).toLowerCase() : '';
190919
+ };
190920
+ const youtubeEmbed = (url) => {
190921
+ var _a;
190922
+ const host = url.hostname.toLowerCase().replace(/^(www|m)\./, '');
190923
+ let id = null;
190924
+ if (host === 'youtu.be')
190925
+ id = (_a = url.pathname.split('/')[1]) !== null && _a !== void 0 ? _a : null;
190926
+ else if (host === 'youtube.com' || host === 'youtube-nocookie.com') {
190927
+ const [, section, rest] = url.pathname.split('/');
190928
+ if (section === 'watch')
190929
+ id = url.searchParams.get('v');
190930
+ else if (section === 'embed' || section === 'shorts' || section === 'live' || section === 'v')
190931
+ id = rest !== null && rest !== void 0 ? rest : null;
190932
+ }
190933
+ return id && /^[\w-]{6,}$/.test(id) ? `https://www.youtube-nocookie.com/embed/${id}` : null;
190934
+ };
190935
+ const googleEmbed = (url) => {
190936
+ const host = url.hostname.toLowerCase();
190937
+ if (host === 'drive.google.com') {
190938
+ const file = url.pathname.match(/^\/file\/d\/([\w-]+)/);
190939
+ if (file)
190940
+ return `https://drive.google.com/file/d/${file[1]}/preview`;
190941
+ const open = url.pathname === '/open' && url.searchParams.get('id');
190942
+ if (open)
190943
+ return `https://drive.google.com/file/d/${open}/preview`;
190944
+ return null;
190945
+ }
190946
+ if (host === 'docs.google.com') {
190947
+ const doc = url.pathname.match(/^\/(document|spreadsheets|presentation)\/d\/([\w-]+)/);
190948
+ return doc ? `https://docs.google.com/${doc[1]}/d/${doc[2]}/preview` : null;
190949
+ }
190950
+ return null;
190951
+ };
190952
+ /** A kind the backend may name on the document, when it says one. */
190953
+ const kindFromHint = (hint) => {
190954
+ const h = (hint !== null && hint !== void 0 ? hint : '').toLowerCase();
190955
+ if (!h)
190956
+ return null;
190957
+ if (/image|photo|picture/.test(h))
190958
+ return 'image';
190959
+ if (/audio|podcast/.test(h))
190960
+ return 'audio';
190961
+ if (/video(?!.*youtube)/.test(h) && !/youtube/.test(h))
190962
+ return 'video';
190963
+ if (/docx|word|powerpoint|pptx|excel|xlsx|spreadsheet|zip|archive|course/.test(h))
190964
+ return 'none';
190965
+ return null;
190966
+ };
190967
+ /**
190968
+ * `null` when the document cannot be shown here: no URL, a host that refuses
190969
+ * framing, or a file type a browser cannot render (Office files, archives).
190970
+ */
190971
+ function previewPlan(source, hint) {
190972
+ const raw = (source !== null && source !== void 0 ? source : '').trim();
190973
+ if (!/^https?:\/\//i.test(raw))
190974
+ return null;
190975
+ let url;
190976
+ try {
190977
+ url = new URL(raw);
190978
+ }
190979
+ catch (_a) {
190980
+ return null;
190981
+ }
190982
+ const host = url.hostname.toLowerCase();
190983
+ const yt = youtubeEmbed(url);
190984
+ if (yt)
190985
+ return { kind: 'frame', src: yt };
190986
+ // A YouTube page that is not a video (a channel, a playlist) cannot be framed.
190987
+ if (/(^|\.)(youtube\.com|youtu\.be|youtube-nocookie\.com)$/.test(host))
190988
+ return null;
190989
+ const google = googleEmbed(url);
190990
+ if (google)
190991
+ return { kind: 'frame', src: google };
190992
+ if (host === 'drive.google.com' || host === 'docs.google.com')
190993
+ return null;
190994
+ if (host === 'raw.githubusercontent.com')
190995
+ return { kind: 'frame', src: raw };
190996
+ if (UNFRAMEABLE_HOSTS.some((domain) => hostMatches(host, domain)))
190997
+ return null;
190998
+ const hinted = kindFromHint(hint);
190999
+ if (hinted === 'none')
191000
+ return null;
191001
+ if (hinted)
191002
+ return { kind: hinted, src: raw };
191003
+ const ext = extensionOf(url.pathname);
191004
+ if (IMAGE.has(ext))
191005
+ return { kind: 'image', src: raw };
191006
+ if (AUDIO.has(ext))
191007
+ return { kind: 'audio', src: raw };
191008
+ if (VIDEO.has(ext))
191009
+ return { kind: 'video', src: raw };
191010
+ if (NOT_VIEWABLE.has(ext))
191011
+ return null;
191012
+ // PDFs, text, CSV, Markdown, HTML, JSON and extension-less API URLs: the
191013
+ // browser renders these itself (its PDF viewer, or as text or a page).
191014
+ return { kind: 'frame', src: raw };
191015
+ }
191016
+
191017
+ /** The shape a retrieved document is listed by: the session query's `VectorResult`
191018
+ * and a transcript's `TranscriptRetrievedDocument` both satisfy it. */
191019
+ /** Only `http(s)` sources are links; a bare file name or dataset id is not. */
191020
+ const isHttpUrl = (value) => /^https?:\/\//i.test((value !== null && value !== void 0 ? value : '').trim());
191021
+ /** `0.7` → `70`; anything unusable → undefined. */
191022
+ const relevancePercent = (score) => typeof score === 'number' && Number.isFinite(score)
191023
+ ? Math.round(Math.max(0, Math.min(1, score)) * 100)
191024
+ : undefined;
191025
+ /**
191026
+ * The document's URL with a text fragment for the matched passage's opening
191027
+ * words, so a browser that supports fragments (Chromium for HTML pages) opens
191028
+ * the page scrolled to, and highlighting, the passage. PDFs and other
191029
+ * viewers ignore it; a frame cannot honour it, so only new-tab links get it.
191030
+ */
191031
+ const deepLink = (url, snippet) => {
191032
+ const words = (snippet !== null && snippet !== void 0 ? snippet : '').replace(/\s+/g, ' ').trim().split(' ').slice(0, 8).join(' ');
191033
+ const text = words.replace(/[\s.,;:!?"'”’)\]]+$/, '');
191034
+ if (text.length < 12)
191035
+ return url;
191036
+ return `${url.split('#')[0]}#:~:text=${encodeURIComponent(text)}`;
191037
+ };
191038
+ const hostOf = (value) => {
191039
+ try {
191040
+ return new URL(value).host;
191041
+ }
191042
+ catch (_a) {
191043
+ return '';
191044
+ }
191045
+ };
191046
+ /**
191047
+ * One retrieved document: its title (a new-tab link when the source is a
191048
+ * URL), its relevance, the matched passage, and — for URLs — a preview the
191049
+ * reader can open (the title link beside it still opens the source in a new
191050
+ * tab).
191051
+ */
191052
+ function RetrievedDocumentRow({ doc }) {
191053
+ var _a, _b;
191054
+ const t = useT();
191055
+ const [previewOpen, setPreviewOpen] = React.useState(false);
191056
+ const source = ((_a = doc.source) !== null && _a !== void 0 ? _a : '').trim();
191057
+ const url = isHttpUrl(source) ? source : null;
191058
+ const title = doc.title || (url ? hostOf(url) : source);
191059
+ const relevance = relevancePercent(doc.score);
191060
+ const openHref = url ? deepLink(url, doc.snippet) : null;
191061
+ // Preview only what a browser can show; Office files, archives and
191062
+ // unframeable hosts get no button rather than a blank frame.
191063
+ const preview = previewPlan(source, doc.type);
191064
+ return (jsx("div", { className: "rounded-lg p-2 hover:bg-gray-50", "data-testid": "retrieved-document", children: jsxs("div", { className: "flex items-start gap-2", children: [jsx(Radio$1, { className: "mt-1 h-4 w-4 text-gray-400" }), jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [jsxs("div", { className: "flex items-start justify-between gap-2", children: [jsx("div", { className: "min-w-0", children: url ? (jsxs("a", { href: openHref !== null && openHref !== void 0 ? openHref : url, target: "_blank", rel: "noopener noreferrer", className: "inline-flex min-w-0 items-center gap-1 text-sm font-semibold text-[#646464] hover:text-blue-600", "aria-label": t('documentSidebar.openInNewTab', { title }), "data-testid": "retrieved-document-link", children: [jsx("span", { className: "min-w-0 break-words", children: title }), jsx(SquareArrowOutUpRight, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": "true" })] })) : (jsx("span", { className: "text-sm font-semibold break-words text-[#646464]", children: title })) }), relevance !== undefined && (jsx("span", { className: "shrink-0 rounded-[5px] bg-blue-50 px-2 py-0.5 text-xs text-blue-700", title: t('documentSidebar.relevanceHint'), "data-testid": "retrieved-document-relevance", children: t('documentSidebar.relevance', { percent: relevance }) }))] }), preview && (jsxs("div", { className: "pt-1", children: [jsxs(Button$1, { type: "button", variant: "outline", size: "sm", onClick: () => setPreviewOpen(true), className: "h-7 gap-1.5 px-2.5 text-xs", "data-testid": "retrieved-document-preview-toggle", children: [jsx(Eye, { className: "h-3.5 w-3.5", "aria-hidden": "true" }), t('documentSidebar.preview')] }), jsx(Dialog, { open: previewOpen, onOpenChange: setPreviewOpen, children: jsxs(DialogContent, { className: "flex flex-col gap-0 overflow-hidden rounded-lg p-0",
191065
+ // Inline: the size must not depend on a host's Tailwind scan.
191066
+ style: { width: '94vw', maxWidth: '94vw', height: '92vh' }, "data-testid": "retrieved-document-preview", children: [jsxs(DialogHeader, { className: "border-b border-gray-200 bg-white px-5 py-3 pr-12 text-left", children: [jsxs(DialogTitle, { className: "flex min-w-0 items-center gap-2 text-base font-semibold text-gray-800", children: [jsx("span", { className: "min-w-0 truncate", children: title }), jsx("a", { href: (_b = openHref !== null && openHref !== void 0 ? openHref : url) !== null && _b !== void 0 ? _b : undefined, target: "_blank", rel: "noopener noreferrer", className: "inline-flex shrink-0 items-center text-blue-600 hover:text-blue-700", "aria-label": t('documentSidebar.openInNewTab', { title }), children: jsx(SquareArrowOutUpRight, { className: "h-4 w-4", "aria-hidden": "true" }) })] }), jsx(DialogDescription, { className: "flex flex-wrap items-center gap-2 text-xs text-gray-500", children: relevance !== undefined && (jsx("span", { className: "rounded-[5px] bg-blue-50 px-2 py-0.5 text-blue-700", children: t('documentSidebar.relevance', { percent: relevance }) })) })] }), jsx("div", { className: "flex min-h-0 flex-1 items-center justify-center bg-gray-100", children: preview.kind === 'image' ? (jsx("img", { src: preview.src, alt: title, className: "h-full w-full object-contain" })) : preview.kind === 'audio' ? (jsx("audio", { src: preview.src, controls: true, className: "w-full max-w-2xl px-6" })) : preview.kind === 'video' ? (jsx("video", { src: preview.src, controls: true, className: "h-full w-full bg-black" })) : (jsx("iframe", { src: preview.src, title: title, referrerPolicy: "no-referrer", allow: "fullscreen; autoplay; encrypted-media; picture-in-picture", className: "h-full w-full border-0 bg-white" })) })] }) })] })), jsx("p", { className: "line-clamp-6 pt-[10px] text-[14px] text-gray-600", children: doc.snippet })] })] }) }));
191067
+ }
190629
191068
  function DocumentSidebar({ isModal = false, sessionId = '', documents, }) {
190630
191069
  const t = useT();
190631
191070
  const [isCollapsed, setIsCollapsed] = React.useState(false);
@@ -190658,10 +191097,7 @@ function DocumentSidebar({ isModal = false, sessionId = '', documents, }) {
190658
191097
  backgroundColor: isCollapsed && !isModal ? 'white' : '#F3F6FB',
190659
191098
  // In the dialog the parent bounds the height; the rail caps itself.
190660
191099
  maxHeight: isModal ? undefined : 'calc(100vh - 80px)',
190661
- }, children: jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [!isModal && (jsxs("div", { className: cn('flex cursor-pointer items-center gap-2 border-b border-gray-200 p-4 transition-colors duration-200', isCollapsed && 'h-[80px] justify-center rounded-tl-[5px] rounded-bl-[5px] p-2', 'hover:bg-blue-100'), onClick: toggleCollapse, style: { backgroundColor: '#F3F6FB' }, children: [jsx(FileText, { className: "h-5 w-5 shrink-0 text-blue-600" }), !isCollapsed && (jsxs(Fragment$1, { children: [jsx("h2", { className: "text-base font-medium text-[#646464]", children: t('documentSidebar.retrievedDocuments') }), jsx(ChevronRight, { className: cn('ml-auto h-4 w-4 text-gray-400 transition-transform', isCollapsed ? 'rotate-180' : '') })] }))] })), (!isCollapsed || isModal) && (jsx(Fragment$1, { children: jsx("div", { className: "min-h-0 flex-1 overflow-auto", style: { backgroundColor: '#F3F6FB' }, children: jsx("div", { className: "mt-0 space-y-1 p-2", children: vectorDocuments.map((doc, index) => {
190662
- var _a, _b;
190663
- return (jsxs(React.Fragment, { children: [jsx("div", { className: "rounded-lg p-2 hover:bg-gray-50", children: jsxs("div", { className: "flex items-start gap-2", children: [jsx(Radio$1, { className: "mt-1 h-4 w-4 text-gray-400" }), jsxs("div", { className: "min-w-0 flex-1 space-y-1", children: [jsxs("div", { className: "flex items-center justify-between", children: [jsx(Link$2, { href: (_a = doc.source) !== null && _a !== void 0 ? _a : '', target: "_blank", className: "min-w-0", children: jsx("span", { className: "text-sm font-semibold break-words text-[#646464] hover:text-blue-600", children: doc.title }) }), jsx("div", { className: "flex items-center gap-2 self-center", children: jsx("span", { className: "text-xs text-gray-500", children: (_b = doc === null || doc === void 0 ? void 0 : doc.score) === null || _b === void 0 ? void 0 : _b.toFixed(2) }) })] }), jsx("p", { className: "line-clamp-6 pt-[10px] text-[14px] text-gray-600", children: doc.snippet })] })] }) }), index < vectorDocuments.length - 1 && (jsx("div", { className: "my-2 border-t border-gray-200" }))] }, index));
190664
- }) }) }) }))] }) })) : null }));
191100
+ }, children: jsxs("div", { className: "flex h-full min-h-0 flex-col", children: [!isModal && (jsxs("div", { className: cn('flex cursor-pointer items-center gap-2 border-b border-gray-200 p-4 transition-colors duration-200', isCollapsed && 'h-[80px] justify-center rounded-tl-[5px] rounded-bl-[5px] p-2', 'hover:bg-blue-100'), onClick: toggleCollapse, style: { backgroundColor: '#F3F6FB' }, children: [jsx(FileText, { className: "h-5 w-5 shrink-0 text-blue-600" }), !isCollapsed && (jsxs(Fragment$1, { children: [jsx("h2", { className: "text-base font-medium text-[#646464]", children: t('documentSidebar.retrievedDocuments') }), jsx(ChevronRight, { className: cn('ml-auto h-4 w-4 text-gray-400 transition-transform', isCollapsed ? 'rotate-180' : '') })] }))] })), (!isCollapsed || isModal) && (jsx(Fragment$1, { children: jsx("div", { className: "min-h-0 flex-1 overflow-auto", style: { backgroundColor: '#F3F6FB' }, children: jsx("div", { className: "mt-0 space-y-1 p-2", children: vectorDocuments.map((doc, index) => (jsxs(React.Fragment, { children: [jsx(RetrievedDocumentRow, { doc: doc }), index < vectorDocuments.length - 1 && (jsx("div", { className: "my-2 border-t border-gray-200" }))] }, index))) }) }) }))] }) })) : null }));
190665
191101
  }
190666
191102
 
190667
191103
  /**
@@ -197878,15 +198314,23 @@ const sanitizeDomain = (domain) => domain
197878
198314
  .replace(/^https?:\/\//, '')
197879
198315
  .replace(/\/.*$/, '')
197880
198316
  .replace(/^www\./, '');
197881
- const AddDomainDialog = ({ open, onOpenChange, canAddPlatformDomain, projects, isLoadingProjects, isSubmitting, onSubmitPlatformDomain, onSubmitAppDomain, }) => {
198317
+ /** One label under the platform's shared domain — the backend's own rule. */
198318
+ const SUBDOMAIN_RE = /^[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?$/;
198319
+ /** Typed like a username: only case and surrounding whitespace are forgiven. */
198320
+ const sanitizeSubdomain = (subdomain) => subdomain.trim().toLowerCase();
198321
+ const AddDomainDialog = ({ open, onOpenChange, canAddPlatformDomain, defaultMode = 'platform', projects, isLoadingProjects, isSubmitting, onSubmitPlatformDomain, onSubmitAppDomain, }) => {
198322
+ var _a;
197882
198323
  const t = useT();
197883
- const [mode, setMode] = useState(canAddPlatformDomain ? 'platform' : 'app');
198324
+ const initialMode = canAddPlatformDomain ? defaultMode : 'app';
198325
+ const [mode, setMode] = useState(initialMode);
197884
198326
  const [domainValue, setDomainValue] = useState('');
198327
+ const [subdomainValue, setSubdomainValue] = useState('');
197885
198328
  const [projectId, setProjectId] = useState('');
197886
198329
  const reset = () => {
197887
198330
  setDomainValue('');
198331
+ setSubdomainValue('');
197888
198332
  setProjectId('');
197889
- setMode(canAddPlatformDomain ? 'platform' : 'app');
198333
+ setMode(initialMode);
197890
198334
  };
197891
198335
  const close = () => {
197892
198336
  reset();
@@ -197898,10 +198342,27 @@ const AddDomainDialog = ({ open, onOpenChange, canAddPlatformDomain, projects, i
197898
198342
  await onSubmitPlatformDomain(sanitizeDomain(domainValue));
197899
198343
  }
197900
198344
  else {
197901
- await onSubmitAppDomain(Number(projectId), sanitizeDomain(domainValue));
198345
+ await onSubmitAppDomain(Number(projectId), {
198346
+ domain: sanitizeDomain(domainValue),
198347
+ subdomain: sanitizeSubdomain(subdomainValue),
198348
+ });
197902
198349
  }
197903
198350
  };
197904
- const canSubmit = mode === 'platform' ? domainValue.trim().length > 0 : projectId.trim().length > 0;
198351
+ const hasDomain = domainValue.trim().length > 0;
198352
+ const subdomain = sanitizeSubdomain(subdomainValue);
198353
+ const hasSubdomain = subdomain.length > 0;
198354
+ // An app is served at exactly one address, and a subdomain has to be one the
198355
+ // backend will take — say which rule is unmet, and only once something was
198356
+ // typed, so an untouched form stays quiet.
198357
+ const appAddressProblem = mode === 'app' && hasDomain && hasSubdomain
198358
+ ? 'both'
198359
+ : mode === 'app' && hasSubdomain && !SUBDOMAIN_RE.test(subdomain)
198360
+ ? 'invalid'
198361
+ : null;
198362
+ const canSubmit = mode === 'platform'
198363
+ ? hasDomain
198364
+ : projectId.trim().length > 0 && (hasDomain || hasSubdomain) && appAddressProblem === null;
198365
+ const selectedProject = projects.find((project) => String(project.id) === projectId);
197905
198366
  return (jsx(Dialog, { open: open, onOpenChange: (next) => {
197906
198367
  if (!next) {
197907
198368
  reset();
@@ -197910,9 +198371,11 @@ const AddDomainDialog = ({ open, onOpenChange, canAddPlatformDomain, projects, i
197910
198371
  }, children: jsxs(DialogContent, { className: "sm:max-w-[480px]", children: [jsxs(DialogHeader, { children: [jsx(DialogTitle, { children: t('advancedCustomDomain.dialogTitle') }), jsx(DialogDescription, { children: t('advancedCustomDomain.dialogDescription') })] }), jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [jsxs("div", { className: "space-y-2", children: [jsx("label", { htmlFor: "add-domain-kind", className: "text-sm", children: t('advancedCustomDomain.kindLabel') }), jsxs(Select$1, { value: mode, onValueChange: (next) => setMode(next), children: [jsx(SelectTrigger, { id: "add-domain-kind", children: jsx(SelectValue, {}) }), jsxs(SelectContent, { children: [canAddPlatformDomain && (jsx(SelectItem, { value: "platform", children: t('advancedCustomDomain.kindPlatform') })), jsx(SelectItem, { value: "app", children: t('advancedCustomDomain.kindApp') })] })] })] }), mode === 'app' && (jsxs("div", { className: "space-y-2", children: [jsx("label", { htmlFor: "add-domain-project", className: "text-sm", children: t('advancedCustomDomain.projectLabel') }), isLoadingProjects ? (jsx("p", { className: "text-sm text-[#646464]", children: t('advancedCustomDomain.loading') })) : projects.length === 0 ? (
197911
198372
  // The backend lists only the caller's own projects, so this is
197912
198373
  // "you have not deployed anything", not "the platform has not".
197913
- jsx("p", { className: "text-sm text-[#646464]", children: t('advancedCustomDomain.noProjects') })) : (jsxs(Select$1, { value: projectId, onValueChange: setProjectId, children: [jsx(SelectTrigger, { id: "add-domain-project", children: jsx(SelectValue, { placeholder: t('advancedCustomDomain.projectPlaceholder') }) }), jsx(SelectContent, { children: projects.map((project) => (jsx(SelectItem, { value: String(project.id), children: project.name }, project.id))) })] }))] })), jsxs("div", { className: "space-y-2", children: [jsx("label", { htmlFor: "add-domain-name", className: "text-sm", children: t('advancedCustomDomain.customDomainLabel') }), jsx(Input, { id: "add-domain-name", value: domainValue, onChange: (event) => setDomainValue(event.target.value), placeholder: "example.com", className: "w-full", required: mode === 'platform' }), jsx("p", { className: "text-xs text-[#646464]", children: mode === 'app'
198374
+ jsx("p", { className: "text-sm text-[#646464]", children: t('advancedCustomDomain.noProjects') })) : (jsxs(Select$1, { value: projectId, onValueChange: setProjectId, children: [jsx(SelectTrigger, { id: "add-domain-project", children: jsx(SelectValue, { placeholder: t('advancedCustomDomain.projectPlaceholder') }) }), jsx(SelectContent, { children: projects.map((project) => (jsx(SelectItem, { value: String(project.id), children: project.name }, project.id))) })] }))] })), mode === 'app' && (jsxs("div", { className: "space-y-2", children: [jsx("label", { htmlFor: "add-domain-subdomain", className: "text-sm", children: t('advancedCustomDomain.subdomainLabel') }), jsx(Input, { id: "add-domain-subdomain", value: subdomainValue, onChange: (event) => setSubdomainValue(event.target.value),
198375
+ // The app's own name is the suggestion the deploy skill makes.
198376
+ placeholder: (_a = selectedProject === null || selectedProject === void 0 ? void 0 : selectedProject.name) !== null && _a !== void 0 ? _a : '', className: "w-full" }), jsx("p", { className: "text-xs text-[#646464]", children: t('advancedCustomDomain.subdomainHelp') })] })), jsxs("div", { className: "space-y-2", children: [jsx("label", { htmlFor: "add-domain-name", className: "text-sm", children: t('advancedCustomDomain.customDomainLabel') }), jsx(Input, { id: "add-domain-name", value: domainValue, onChange: (event) => setDomainValue(event.target.value), placeholder: "example.com", className: "w-full", required: mode === 'platform' }), jsx("p", { className: "text-xs text-[#646464]", children: mode === 'app'
197914
198377
  ? t('advancedCustomDomain.domainHelpApp')
197915
- : t('advancedCustomDomain.domainHelpPlatform') })] }), jsxs("div", { className: "flex justify-end gap-2", children: [jsx(Button$1, { type: "button", variant: "outline", onClick: close, children: t('advancedCustomDomain.cancel') }), jsxs(Button$1, { type: "submit", disabled: isSubmitting || !canSubmit, children: [isSubmitting && jsx(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), t('advancedCustomDomain.save')] })] })] })] }) }));
198378
+ : t('advancedCustomDomain.domainHelpPlatform') }), appAddressProblem === 'both' && (jsx("p", { className: "text-xs text-[#646464]", role: "status", children: t('advancedCustomDomain.oneOfSubdomainOrDomain') })), appAddressProblem === 'invalid' && (jsx("p", { className: "text-xs text-[#646464]", role: "status", children: t('advancedCustomDomain.subdomainInvalid') }))] }), jsxs("div", { className: "flex justify-end gap-2", children: [jsx(Button$1, { type: "button", variant: "outline", onClick: close, children: t('advancedCustomDomain.cancel') }), jsxs(Button$1, { type: "submit", disabled: isSubmitting || !canSubmit, children: [isSubmitting && jsx(LoaderCircle, { className: "mr-2 h-4 w-4 animate-spin" }), t('advancedCustomDomain.save')] })] })] })] }) }));
197916
198379
  };
197917
198380
 
197918
198381
  var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
@@ -198104,7 +198567,7 @@ const resolveCname = async (domain, target) => {
198104
198567
  const body = await response.json();
198105
198568
  return Boolean((_a = body === null || body === void 0 ? void 0 : body.Answer) === null || _a === void 0 ? void 0 : _a.some((answer) => { var _a; return ((_a = answer.data) !== null && _a !== void 0 ? _a : '').replace(/\.$/, '') === target; }));
198106
198569
  };
198107
- const DomainRow = ({ row, sslValue, onReverify, onRemove, isBusy, onStatusChange, }) => {
198570
+ const DomainRow = ({ row, sharedApp, sslValue, onReverify, onRemove, isBusy, onStatusChange, }) => {
198108
198571
  var _a;
198109
198572
  const t = useT();
198110
198573
  const isHosted = row.spa === VERCEL_SPA;
@@ -198176,7 +198639,7 @@ const DomainRow = ({ row, sslValue, onReverify, onRemove, isBusy, onStatusChange
198176
198639
  const statusBadge = (jsx("span", { className: status === 'verified'
198177
198640
  ? 'rounded bg-green-100 px-2 py-1 text-xs text-green-800'
198178
198641
  : 'rounded bg-gray-100 px-2 py-1 text-xs text-gray-600', children: status === 'checking' ? (jsxs("span", { className: "flex items-center gap-1", children: [jsx(LoaderCircle, { className: "h-3 w-3 animate-spin" }), t('advancedCustomDomain.verifying')] })) : (statusLabel()) }));
198179
- return (jsxs("div", { className: "space-y-3 rounded-lg border border-gray-200 p-3 dark:border-gray-700", children: [jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm", children: row.custom_domain }), jsx("span", { className: "text-xs text-[#646464]", children: isHosted ? t('advancedCustomDomain.kindApp') : t('advancedCustomDomain.kindPlatform') }), statusBadge] }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Button$1, { variant: "outline", size: "sm", onClick: () => (isHosted ? void onReverify(row) : void checkSpaDomain()), disabled: isBusy || status === 'checking' || (!isHosted && !row.registered_with_dns_pro), "aria-label": t('advancedCustomDomain.reverifyAriaLabel', { domain: row.custom_domain }), children: isBusy || status === 'checking' ? (jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" })) : (jsxs(Fragment$1, { children: [jsx(RefreshCw, { className: "mr-1 h-4 w-4", "aria-hidden": "true" }), t('advancedCustomDomain.reverify')] })) }), jsx(Button$1, { variant: "outline", size: "sm", className: "text-red-600 hover:text-red-700", onClick: () => setConfirmOpen(true), disabled: isBusy, "aria-label": t('advancedCustomDomain.removeAriaLabel', { domain: row.custom_domain }), children: isHosted ? t('advancedCustomDomain.detach') : t('advancedCustomDomain.delete') })] })] }), records.length > 0 ? (jsxs(Table, { className: "table-fixed", children: [jsx(TableHeader, { children: jsxs(TableRow, { children: [jsx(TableHead, { className: "w-[90px]", children: t('advancedCustomDomain.tableType') }), jsx(TableHead, { className: "w-1/3", children: t('advancedCustomDomain.tableNameHost') }), jsx(TableHead, { children: t('advancedCustomDomain.tableValue') })] }) }), jsx(TableBody, { children: records.map((record, index) => (jsxs(TableRow, { children: [jsx(TableCell, { className: "text-sm", children: record.type }), jsx(TableCell, { children: jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm break-all", children: record.name }), jsx(Button$1, { type: "button", variant: "ghost", size: "icon", className: "h-6 w-6 shrink-0", onClick: () => handleCopy(record.name, `name-${index}`), "aria-label": t('advancedCustomDomain.copyNameHostAriaLabel', {
198642
+ return (jsxs("div", { className: "space-y-3 rounded-lg border border-gray-200 p-3 dark:border-gray-700", children: [jsxs("div", { className: "flex flex-wrap items-center justify-between gap-2", children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm", children: row.custom_domain }), jsx("span", { className: "text-xs text-[#646464]", children: isHosted ? t('advancedCustomDomain.kindApp') : t('advancedCustomDomain.kindPlatform') }), statusBadge] }), jsxs("div", { className: "flex items-center gap-2", children: [jsx(Button$1, { variant: "outline", size: "sm", onClick: () => (isHosted ? void onReverify(row) : void checkSpaDomain()), disabled: isBusy || status === 'checking' || (!isHosted && !row.registered_with_dns_pro), "aria-label": t('advancedCustomDomain.reverifyAriaLabel', { domain: row.custom_domain }), children: isBusy || status === 'checking' ? (jsx(LoaderCircle, { className: "h-4 w-4 animate-spin" })) : (jsxs(Fragment$1, { children: [jsx(RefreshCw, { className: "mr-1 h-4 w-4", "aria-hidden": "true" }), t('advancedCustomDomain.reverify')] })) }), jsx(Button$1, { variant: "outline", size: "sm", className: "text-red-600 hover:text-red-700", onClick: () => setConfirmOpen(true), disabled: isBusy, "aria-label": t('advancedCustomDomain.removeAriaLabel', { domain: row.custom_domain }), children: isHosted ? t('advancedCustomDomain.detach') : t('advancedCustomDomain.delete') })] })] }), sharedApp ? (jsxs("div", { className: "space-y-1 text-sm text-[#646464]", children: [jsxs("p", { children: [t('advancedCustomDomain.sharedDomainLine'), ' ', jsx("a", { href: `https://${row.custom_domain}`, target: "_blank", rel: "noreferrer", className: "underline", children: t('advancedCustomDomain.openSite', { domain: row.custom_domain }) })] }), jsx("p", { className: "text-xs", children: t('advancedCustomDomain.servesApp', { app: sharedApp.name }) })] })) : records.length > 0 ? (jsxs(Table, { className: "table-fixed", children: [jsx(TableHeader, { children: jsxs(TableRow, { children: [jsx(TableHead, { className: "w-[90px]", children: t('advancedCustomDomain.tableType') }), jsx(TableHead, { className: "w-1/3", children: t('advancedCustomDomain.tableNameHost') }), jsx(TableHead, { children: t('advancedCustomDomain.tableValue') })] }) }), jsx(TableBody, { children: records.map((record, index) => (jsxs(TableRow, { children: [jsx(TableCell, { className: "text-sm", children: record.type }), jsx(TableCell, { children: jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm break-all", children: record.name }), jsx(Button$1, { type: "button", variant: "ghost", size: "icon", className: "h-6 w-6 shrink-0", onClick: () => handleCopy(record.name, `name-${index}`), "aria-label": t('advancedCustomDomain.copyNameHostAriaLabel', {
198180
198643
  domain: record.name,
198181
198644
  }), children: copiedKey === `name-${index}` ? (jsx(Check, { className: "h-4 w-4 text-blue-600", "aria-hidden": "true" })) : (jsx(Copy, { className: "h-4 w-4", "aria-hidden": "true" })) })] }) }), jsxs(TableCell, { children: [jsxs("div", { className: "flex items-center gap-2", children: [jsx("span", { className: "text-sm break-all", children: record.value }), jsx(Button$1, { type: "button", variant: "ghost", size: "icon", className: "h-6 w-6 shrink-0", onClick: () => handleCopy(record.value, `value-${index}`), "aria-label": t('advancedCustomDomain.copyValueAriaLabel'), children: copiedKey === `value-${index}` ? (jsx(Check, { className: "h-4 w-4 text-blue-600", "aria-hidden": "true" })) : (jsx(Copy, { className: "h-4 w-4", "aria-hidden": "true" })) })] }), record.reason && jsx("p", { className: "mt-1 text-xs text-[#646464]", children: record.reason })] })] }, `${record.type}-${record.name}-${record.value}`))) })] })) : (jsx("p", { className: "text-sm text-[#646464]", children: t('advancedCustomDomain.noRecordsYet') })), jsx(AlertDialog, { open: confirmOpen, onOpenChange: setConfirmOpen, children: jsxs(AlertDialogContent, { children: [jsxs(AlertDialogHeader, { children: [jsx(AlertDialogTitle, { children: t('advancedCustomDomain.confirmRemoveTitle') }), jsx(AlertDialogDescription, { children: isHosted
198182
198645
  ? t('advancedCustomDomain.confirmDetachBody', { domain: row.custom_domain })
@@ -198234,9 +198697,20 @@ const CustomDomainsContent = ({ platformKey, username, currentSPA, currentPlatfo
198234
198697
  const { data, isLoading, isFetching, refetch } = useGetCustomDomainsQuery({
198235
198698
  params: { platform_key: platformKey },
198236
198699
  });
198237
- // Only the caller's own deployed apps are listable, and only the Add dialog
198238
- // needs them — so this stays idle until it opens.
198239
- const { data: projectData, isFetching: isLoadingProjects } = useGetHostingProjectsQuery({ org: platformKey, username }, { skip: !isModalOpen || !username });
198700
+ // Only the caller's own deployed apps are listable. The Add dialog offers
198701
+ // them, and a row on the platform's shared domain names the app it serves
198702
+ // (`shared_domain` is that address), so the list is wanted from the start.
198703
+ const { data: projectData, isFetching: isLoadingProjects } = useGetHostingProjectsQuery({ org: platformKey, username }, { skip: !username });
198704
+ // The caller's app served at a shared-domain address, by that address. A
198705
+ // row without a match is an own domain (or another user's app): it keeps
198706
+ // its records.
198707
+ const sharedAppFor = (row) => {
198708
+ var _a;
198709
+ return row.spa === VERCEL_SPA
198710
+ ? ((_a = projectData === null || projectData === void 0 ? void 0 : projectData.projects) !== null && _a !== void 0 ? _a : []).find((project) => !!project.shared_domain &&
198711
+ project.shared_domain.toLowerCase() === row.custom_domain.toLowerCase())
198712
+ : undefined;
198713
+ };
198240
198714
  const [createCustomDomain, { isLoading: isCreating }] = useCreateCustomDomainMutation();
198241
198715
  const [deleteCustomDomain] = useDeleteCustomDomainMutation();
198242
198716
  const [createHostingProjectDomain, { isLoading: isAttaching }] = useCreateHostingProjectDomainMutation();
@@ -198265,10 +198739,15 @@ const CustomDomainsContent = ({ platformKey, username, currentSPA, currentPlatfo
198265
198739
  : typeof window !== 'undefined'
198266
198740
  ? window.location.hostname.split('.').slice(-2).join('.')
198267
198741
  : 'iblai.app'}`;
198268
- // A platform gets one sign-in domain per SPA, so the Add dialog offers that
198269
- // kind only while this SPA has none. Deployed apps have no such limit.
198270
- const canAddPlatformDomain = useMemo(() => Boolean(currentSPA) &&
198271
- !customDomains.some((domain) => { var _a; return domain.spa !== VERCEL_SPA && ((_a = domain.spa) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(currentSPA.toLowerCase())); }), [customDomains, currentSPA]);
198742
+ // The Add dialog offers the sign-in kind whenever it knows which app to bind
198743
+ // the domain to. How many sign-in domains an app may have is the platform's
198744
+ // decision, not the panel's: a refusal comes back as the platform's own
198745
+ // message (`reportError` shows it), so no count is enforced here.
198746
+ const canAddPlatformDomain = Boolean(currentSPA);
198747
+ // The kind the dialog opens on: an app that already has a sign-in domain is
198748
+ // more often adding one for a deployed app; the sign-in kind stays one
198749
+ // click away either way.
198750
+ const hasPlatformDomain = useMemo(() => customDomains.some((domain) => { var _a; return domain.spa !== VERCEL_SPA && ((_a = domain.spa) === null || _a === void 0 ? void 0 : _a.toLowerCase().includes(currentSPA.toLowerCase())); }), [customDomains, currentSPA]);
198272
198751
  /**
198273
198752
  * The status decides what the user should do next, so it gets its own
198274
198753
  * message. 409 shares 400's: both mean "not this domain, not here", and the
@@ -198293,10 +198772,10 @@ const CustomDomainsContent = ({ platformKey, username, currentSPA, currentPlatfo
198293
198772
  };
198294
198773
  const reportError = (error, fallback) => {
198295
198774
  const status = error === null || error === void 0 ? void 0 : error.status;
198296
- // The server's own words go underneath the headline — except on 409, the
198297
- // one status whose body names the organization holding the domain.
198298
- const description = status === 409 ? undefined : serverDetail(error);
198299
- toast.error(headlineForStatus(status, fallback), { description });
198775
+ // The server's own words go underneath the headline. A 409 body never
198776
+ // names the organization holding the domain — the backend keeps that out
198777
+ // on purpose — and for a taken subdomain it carries the way out.
198778
+ toast.error(headlineForStatus(status, fallback), { description: serverDetail(error) });
198300
198779
  };
198301
198780
  const handleAddPlatformDomain = async (domain) => {
198302
198781
  if (!domain) {
@@ -198320,15 +198799,16 @@ const CustomDomainsContent = ({ platformKey, username, currentSPA, currentPlatfo
198320
198799
  reportError(error, t('advancedCustomDomain.createError'));
198321
198800
  }
198322
198801
  };
198323
- const handleAddAppDomain = async (project, domain) => {
198802
+ const handleAddAppDomain = async (project, address) => {
198324
198803
  try {
198325
- // An empty domain is the "assign me a subdomain" path, which the backend
198326
- // reads as the absent key — not as an empty string.
198804
+ // Only the address that was filled in is sent; the dialog guarantees
198805
+ // exactly one. The backend reads an absent key, never an empty string.
198327
198806
  await createHostingProjectDomain({
198328
198807
  org: platformKey,
198329
198808
  username,
198330
198809
  project,
198331
- domain: domain || undefined,
198810
+ domain: address.domain || undefined,
198811
+ subdomain: address.subdomain || undefined,
198332
198812
  }).unwrap();
198333
198813
  await refetch();
198334
198814
  toast.success(t('advancedCustomDomain.createSuccess'));
@@ -198393,7 +198873,7 @@ const CustomDomainsContent = ({ platformKey, username, currentSPA, currentPlatfo
198393
198873
  setIsModalOpen(true);
198394
198874
  }, children: [jsx(Plus, { className: "h-4 w-4", "aria-hidden": "true" }), t('advancedCustomDomain.add')] }), jsx("button", { onClick: () => setIsCollapsed((previous) => !previous), className: "rounded p-1 hover:bg-gray-100 focus:ring-2 focus:ring-blue-500 focus:ring-offset-1 focus:outline-none dark:hover:bg-gray-800", "aria-label": isCollapsed
198395
198875
  ? t('advancedCustomDomain.expandAriaLabel')
198396
- : t('advancedCustomDomain.collapseAriaLabel'), type: "button", children: isCollapsed ? (jsx(ChevronDown, { className: "h-5 w-5 text-gray-400", "aria-hidden": "true" })) : (jsx(ChevronUp, { className: "h-5 w-5 text-gray-400", "aria-hidden": "true" })) })] })] }), !isCollapsed && (jsx("div", { className: "mt-4", children: isLoading ? (jsx("div", { className: "p-4 text-gray-500", children: t('advancedCustomDomain.loading') })) : customDomains.length > 0 ? (jsx("div", { className: "space-y-3", children: sortedDomains.map((row) => (jsx(DomainRow, { row: row, sslValue: sslValue, onReverify: handleReverify, onRemove: handleRemove, isBusy: busyDomainId === row.id, onStatusChange: handleStatusChange }, row.id))) })) : (jsx("div", { className: "p-4 text-center text-sm text-gray-500", children: t('advancedCustomDomain.noDomainConfigured') })) })), jsx(AddDomainDialog, { open: isModalOpen, onOpenChange: setIsModalOpen, canAddPlatformDomain: canAddPlatformDomain, projects: (_a = projectData === null || projectData === void 0 ? void 0 : projectData.projects) !== null && _a !== void 0 ? _a : [], isLoadingProjects: isLoadingProjects, isSubmitting: isCreating || isAttaching, onSubmitPlatformDomain: handleAddPlatformDomain, onSubmitAppDomain: handleAddAppDomain })] }));
198876
+ : t('advancedCustomDomain.collapseAriaLabel'), type: "button", children: isCollapsed ? (jsx(ChevronDown, { className: "h-5 w-5 text-gray-400", "aria-hidden": "true" })) : (jsx(ChevronUp, { className: "h-5 w-5 text-gray-400", "aria-hidden": "true" })) })] })] }), !isCollapsed && (jsx("div", { className: "mt-4", children: isLoading ? (jsx("div", { className: "p-4 text-gray-500", children: t('advancedCustomDomain.loading') })) : customDomains.length > 0 ? (jsx("div", { className: "space-y-3", children: sortedDomains.map((row) => (jsx(DomainRow, { row: row, sharedApp: sharedAppFor(row), sslValue: sslValue, onReverify: handleReverify, onRemove: handleRemove, isBusy: busyDomainId === row.id, onStatusChange: handleStatusChange }, row.id))) })) : (jsx("div", { className: "p-4 text-center text-sm text-gray-500", children: t('advancedCustomDomain.noDomainConfigured') })) })), jsx(AddDomainDialog, { open: isModalOpen, onOpenChange: setIsModalOpen, canAddPlatformDomain: canAddPlatformDomain, defaultMode: hasPlatformDomain ? 'app' : 'platform', projects: (_a = projectData === null || projectData === void 0 ? void 0 : projectData.projects) !== null && _a !== void 0 ? _a : [], isLoadingProjects: isLoadingProjects, isSubmitting: isCreating || isAttaching, onSubmitPlatformDomain: handleAddPlatformDomain, onSubmitAppDomain: handleAddAppDomain })] }));
198397
198877
  };
198398
198878
 
198399
198879
  const StudentMentorCreationContent = ({ platformKey, }) => {
@@ -229463,7 +229943,9 @@ function SummerNoteTextEditor({ value, onChange, exportFormat = 'markdown', disa
229463
229943
  isApplyingValueRef.current = false;
229464
229944
  }
229465
229945
  }, [value, isReady, toEditorHtml]);
229466
- React__default.useEffect(() => {
229946
+ // A layout effect: the loading node leaves in this same commit, so the editor
229947
+ // is never painted editable while disabled. The test helper waits on that node.
229948
+ React__default.useLayoutEffect(() => {
229467
229949
  const instance = instanceRef.current;
229468
229950
  if (!instance || !isReady) {
229469
229951
  return;
@@ -229491,8 +229973,9 @@ function SummerNoteTextEditor({ value, onChange, exportFormat = 'markdown', disa
229491
229973
  editable.style.maxHeight = `${Math.max(EDITOR_MAX_HEIGHT, minHeightPx)}px`;
229492
229974
  }, [minHeightPx, isReady]);
229493
229975
  // Summernote's editable region is a plain contenteditable div; describe it the
229494
- // same way `RichTextEditor` describes its own.
229495
- React__default.useEffect(() => {
229976
+ // same way `RichTextEditor` describes its own. A layout effect, so the region
229977
+ // is never painted without its name.
229978
+ React__default.useLayoutEffect(() => {
229496
229979
  const editable = editableRef.current;
229497
229980
  if (!editable || !isReady) {
229498
229981
  return;
@@ -235142,43 +235625,6 @@ const useTranscripts = ({ tenantKey, mentorId, usergroupIds, }) => {
235142
235625
  };
235143
235626
  };
235144
235627
 
235145
- /**
235146
- * An agent named in a stats row, clickable to re-scope the whole analytics
235147
- * page to that agent — the same thing the control bar's picker does, reached
235148
- * from the data instead of from a search box.
235149
- *
235150
- * It renders as plain text wherever re-scoping is impossible or pointless: on
235151
- * per-agent pages (no picker, so nothing would visibly change), on rows whose
235152
- * agent the payload identifies by name alone, and on rows of the agent the
235153
- * page is already scoped to (every row, once the picker names one agent — a
235154
- * blue link there promised something and delivered nothing). Safe inside
235155
- * clickable rows and cards — neither its clicks nor its key presses reach
235156
- * their handlers.
235157
- */
235158
- function AgentScopeLink({ uniqueId, name, fallback = '-', onScoped, className, testId, }) {
235159
- const t = useT();
235160
- const setScopedMentor = useAnalyticsScopeSetter();
235161
- const { scopedMentor } = useAnalyticsScope();
235162
- const display = name || uniqueId || fallback;
235163
- const isCurrent = !!uniqueId && (scopedMentor === null || scopedMentor === void 0 ? void 0 : scopedMentor.uniqueId) === uniqueId;
235164
- if (!setScopedMentor || !uniqueId || isCurrent) {
235165
- return (jsx("span", { className: className, "data-testid": testId, children: display }));
235166
- }
235167
- return (jsx("button", { type: "button", onClick: (event) => {
235168
- event.stopPropagation();
235169
- // No `dbId`: these payloads carry the `unique_id` only. AnalyticsLayout
235170
- // resolves the rest before the scope reaches anyone — see
235171
- // AnalyticsScopedMentor.
235172
- setScopedMentor({ uniqueId, name: name || uniqueId });
235173
- onScoped === null || onScoped === void 0 ? void 0 : onScoped();
235174
- },
235175
- // Rows that open on Enter/Space would otherwise swallow the key press.
235176
- onKeyDown: (event) => event.stopPropagation(),
235177
- // Truncates inside an `inline-flex` box so the name keeps the baseline
235178
- // of the "Agent:" label beside it (see UserProfileLink).
235179
- className: cn('inline-flex max-w-full cursor-pointer text-left hover:text-blue-600 hover:underline focus:text-blue-600 focus:outline-none', className), "aria-label": t('analyticsAgentScopeLink.scopeToAgent', { name: display }), "data-testid": testId, children: jsx("span", { className: "min-w-0 truncate", children: display }) }));
235180
- }
235181
-
235182
235628
  /**
235183
235629
  * Attachments on a transcript turn. A turn can carry files with no text at
235184
235630
  * all (an uploaded image and nothing else), so the bubble renders these even
@@ -235617,6 +236063,36 @@ const getMessageContent = (content) => {
235617
236063
  }
235618
236064
  return '';
235619
236065
  };
236066
+ /**
236067
+ * The person behind a transcript, in the detail pane: who they are — their
236068
+ * full name when it is a real one, else their username — and their email,
236069
+ * each opening the shared profile viewer. Nobody at all reads "Anonymous".
236070
+ */
236071
+ function TranscriptUserLines({ source, tenantKey, currentSPA, }) {
236072
+ const t = useT();
236073
+ const identity = resolveUserIdentity(source, {
236074
+ anonymousLabel: t('analyticsAnalyticsTranscriptsStats.anonymous'),
236075
+ });
236076
+ const realName = hasDistinctName(identity.name, identity.profileUsername, identity.username)
236077
+ ? identity.name
236078
+ : undefined;
236079
+ const who = realName
236080
+ ? { label: t('analyticsAnalyticsTranscriptsStats.labelFullName'), value: realName }
236081
+ : identity.username
236082
+ ? {
236083
+ label: t('analyticsAnalyticsTranscriptsStats.labelUsername'),
236084
+ value: identity.username,
236085
+ }
236086
+ : null;
236087
+ const email = identity.email
236088
+ ? { label: t('analyticsAnalyticsTranscriptsStats.labelEmail'), value: identity.email }
236089
+ : null;
236090
+ const link = (display) => (jsx(UserProfileLink, { currentSPA: currentSPA, tenantKey: tenantKey, username: identity.profileUsername, display: display }));
236091
+ if (!who && !email) {
236092
+ return (jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelUser'), " ", link(identity.label)] }));
236093
+ }
236094
+ return (jsxs(Fragment$1, { children: [who && (jsxs("div", { children: [who.label, " ", link(who.value)] })), email && (jsxs("div", { children: [email.label, " ", link(email.value)] }))] }));
236095
+ }
235620
236096
  /**
235621
236097
  * The model as the nav bar shows it (logo + display name); hosts may override
235622
236098
  * via `turnDetails.renderModel`. The catalogue is read for the tenant and the
@@ -235659,14 +236135,14 @@ function TranscriptDocumentsButton({ detail, className, }) {
235659
236135
  return (jsx(RetrievedDocumentsButton, { sessionId: sessionId, documents: documents.length > 0 ? documents : undefined, className: className }));
235660
236136
  }
235661
236137
  function AnalyticsTranscriptsStats({ tenantKey, currentSPA, mentorId, selectedMentorId, usergroupIds, turnDetails, }) {
235662
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
236138
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r;
235663
236139
  const t = useT();
235664
- // Who a row belongs to, by the shared identity rule: the translated
235665
- // "Anonymous" when the row names nobody (a bare "-" read as missing data).
235666
- const identifyUser = React__default.useCallback((source, order) => resolveUserIdentity(source, {
235667
- order,
235668
- anonymousLabel: t('analyticsAnalyticsTranscriptsStats.anonymous'),
235669
- }).label, [t]);
236140
+ const sentimentLabels = React__default.useMemo(() => ({
236141
+ positive: t('analyticsAnalyticsTranscriptsStats.sentimentPositive'),
236142
+ neutral: t('analyticsAnalyticsTranscriptsStats.sentimentNeutral'),
236143
+ negative: t('analyticsAnalyticsTranscriptsStats.sentimentNegative'),
236144
+ userSentiment: t('analyticsAnalyticsTranscriptsStats.userSentiment'),
236145
+ }), [t]);
235670
236146
  const currentMentorId = useScopedMentorId(selectedMentorId, mentorId);
235671
236147
  const [isModalOpen, setIsModalOpen] = useState(false);
235672
236148
  const searchParams = useSearchParams();
@@ -235677,6 +236153,13 @@ function AnalyticsTranscriptsStats({ tenantKey, currentSPA, mentorId, selectedMe
235677
236153
  // badge. Hosts that browse across agents (the LMS analytics route) pass no
235678
236154
  // mentorId, so the transcript's own agent is the only correct scope.
235679
236155
  const detailMentorId = ((_a = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _a === void 0 ? void 0 : _a.mentor_unique_id) || currentMentorId;
236156
+ // The detail's model badge shows the model's own provider: the summary's
236157
+ // when the backend sends one, else the list row's for this session (the
236158
+ // source the cards use, so both columns agree), and only then the turns'
236159
+ // `metadata.llm_provider` — which for a routed model such as ibl.ai Pro
236160
+ // names the provider underneath (openai), not the model's own.
236161
+ const selectedRow = (_b = transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.results) === null || _b === void 0 ? void 0 : _b.find((row) => row.session === selectedTranscript);
236162
+ const detailProvider = (_d = (_c = providerOf(transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary)) !== null && _c !== void 0 ? _c : providerOf(selectedRow)) !== null && _d !== void 0 ? _d : providerOfTurns(transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages);
235680
236163
  // Read session_id from URL on mount and select the transcript
235681
236164
  useEffect(() => {
235682
236165
  const sessionIdParam = searchParams === null || searchParams === void 0 ? void 0 : searchParams.get('session_id');
@@ -235778,46 +236261,37 @@ function AnalyticsTranscriptsStats({ tenantKey, currentSPA, mentorId, selectedMe
235778
236261
  };
235779
236262
  // Transcript Detail Component (reusable for both desktop and mobile)
235780
236263
  const TranscriptDetail = ({ className = '' }) => {
235781
- var _a, _b, _c, _d, _e, _f, _g, _h;
236264
+ var _a, _b, _c, _d, _e, _f;
235782
236265
  return (jsx("div", { className: cn('h-full flex flex-col', className), children: !selectedTranscript ? (jsx("div", { className: "flex items-center justify-center h-full text-gray-400", children: jsxs("div", { className: "text-center", children: [jsx(ArrowLeft, { className: "h-6 w-6 mx-auto mb-2" }), jsx("p", { children: t('analyticsAnalyticsTranscriptsStats.selectConversation') })] }) })) : isLoadingTranscriptsMessagesDetailsData ? (
235783
236266
  /* Loading state */
235784
236267
  jsx("div", { className: "flex items-center justify-center h-full text-gray-400", children: jsxs("div", { className: "text-center", children: [jsx("div", { className: "animate-spin rounded-full h-8 w-8 border-b-2 border-blue-500 mx-auto mb-3", "aria-hidden": "true" }), jsx("p", { children: t('analyticsAnalyticsTranscriptsStats.loadingTranscript') })] }) })) : isErrorTranscriptsMessagesDetailsData || !transcriptsMessagesDetailsData ? (
235785
236268
  /* Error or no data state */
235786
236269
  jsx("div", { className: "flex items-center justify-center h-full text-gray-400", children: jsxs("div", { className: "text-center", children: [jsx(X$1, { className: "h-6 w-6 mx-auto mb-2 text-red-400" }), jsx("p", { children: t('analyticsAnalyticsTranscriptsStats.noTranscriptDetails') }), jsx("p", { className: "text-sm mt-1", children: t('analyticsAnalyticsTranscriptsStats.unableToLoadTranscript') })] }) })) : (
235787
236270
  /* Data loaded successfully */
235788
- jsxs(Fragment$1, { children: [jsxs("div", { className: "mb-4 flex-shrink-0", children: [jsx("h2", { className: "text-lg font-semibold mb-2", children: t('analyticsAnalyticsTranscriptsStats.conversationTranscript') }), jsxs("div", { className: "text-sm text-gray-500", children: [jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelUser'), ' ', jsx(UserProfileLink, { currentSPA: currentSPA, tenantKey: tenantKey, username: (_a = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _a === void 0 ? void 0 : _a.username, display: identifyUser(transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) })] }), jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelAgent'), ' ', jsx(AgentScopeLink, { uniqueId: (_b = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _b === void 0 ? void 0 : _b.mentor_unique_id, name: (_c = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _c === void 0 ? void 0 : _c.mentor })] }), jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [t('analyticsAnalyticsTranscriptsStats.labelModel'), ' ', ((_d = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _d === void 0 ? void 0 : _d.model)
235789
- ? ((_e = turnDetails === null || turnDetails === void 0 ? void 0 : turnDetails.renderModel) !== null && _e !== void 0 ? _e : renderModelBadge)({
236271
+ jsxs(Fragment$1, { children: [jsxs("div", { className: "mb-4 flex-shrink-0", children: [jsx("h2", { className: "text-lg font-semibold mb-2", children: t('analyticsAnalyticsTranscriptsStats.conversationTranscript') }), jsxs("div", { className: "text-sm text-gray-500", children: [jsx(TranscriptUserLines, { source: transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary, tenantKey: tenantKey, currentSPA: currentSPA }), jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelAgent'), ' ', jsx(AgentSettingsLink, { uniqueId: (_a = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _a === void 0 ? void 0 : _a.mentor_unique_id, name: (_b = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _b === void 0 ? void 0 : _b.mentor })] }), jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [t('analyticsAnalyticsTranscriptsStats.labelModel'), ' ', ((_c = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _c === void 0 ? void 0 : _c.model)
236272
+ ? ((_d = turnDetails === null || turnDetails === void 0 ? void 0 : turnDetails.renderModel) !== null && _d !== void 0 ? _d : renderModelBadge)({
235790
236273
  model: transcriptsMessagesDetailsData.summary.model,
235791
- provider: (_f = providerOf(transcriptsMessagesDetailsData.summary)) !== null && _f !== void 0 ? _f : providerOfTurns(transcriptsMessagesDetailsData.messages),
236274
+ provider: detailProvider,
235792
236275
  tenantKey,
235793
236276
  mentorId: detailMentorId,
235794
236277
  })
235795
- : '-'] }), jsx(TranscriptDocumentsButton, { detail: transcriptsMessagesDetailsData, className: "mt-2" })] })] }), jsx("div", { className: "flex-1 overflow-y-auto space-y-4 min-h-0", children: ((_g = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _g === void 0 ? void 0 : _g.length) > 0 ? ((_h = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _h === void 0 ? void 0 : _h.map((message, index) => {
236278
+ : '-'] }), jsx(TranscriptDocumentsButton, { detail: transcriptsMessagesDetailsData, className: "mt-2" })] })] }), jsx("div", { className: "flex-1 overflow-y-auto space-y-4 min-h-0", children: ((_e = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _e === void 0 ? void 0 : _e.length) > 0 ? ((_f = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _f === void 0 ? void 0 : _f.map((message, index) => {
235796
236279
  var _a, _b;
235797
236280
  return (jsxs(React__default.Fragment, { children: [((message === null || message === void 0 ? void 0 : message.human) || !!((_a = message === null || message === void 0 ? void 0 : message.human_files) === null || _a === void 0 ? void 0 : _a.length)) && (jsxs("div", { className: `p-3 rounded-lg bg-blue-100 ml-4`, children: [jsx("div", { className: "flex justify-between items-start mb-1", children: jsx("span", { className: "font-medium text-sm", children: t('analyticsAnalyticsTranscriptsStats.roleUser') }) }), message.human && (jsx("p", { className: "text-sm", children: getMessageContent(message.human) })), jsx(TranscriptFiles, { files: message.human_files })] }, `${index}-human`)), ((message === null || message === void 0 ? void 0 : message.ai) || !!((_b = message === null || message === void 0 ? void 0 : message.ai_files) === null || _b === void 0 ? void 0 : _b.length)) && (jsxs("div", { className: `p-3 rounded-lg bg-white mr-4`, children: [jsx("div", { className: "flex justify-between items-start mb-1", children: jsx("span", { className: "font-medium text-sm", children: t('analyticsAnalyticsTranscriptsStats.roleAgent') }) }), message.ai && jsx(Markdown, { children: getMessageContent(message.ai) }), jsx(TranscriptFiles, { files: message.ai_files }), jsx(TranscriptTurnDetails, { turn: message, tenantKey: tenantKey, mentorId: detailMentorId, ...turnDetails })] }, `${index}-ai`))] }, index));
235798
236281
  })) : (jsx("div", { className: "text-center text-gray-500 py-8", children: jsx("p", { children: t('analyticsAnalyticsTranscriptsStats.noMessages') }) })) })] })) }));
235799
236282
  };
235800
- return (jsxs("div", { className: "space-y-8", children: [jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-6", children: [jsx(StatCard, { title: t('analyticsAnalyticsTranscriptsStats.avgMessagesPerConversation'), value: ((_b = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_messages_per_conversation) === null || _b === void 0 ? void 0 : _b.value) || 0, percentage: ((_c = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_messages_per_conversation) === null || _c === void 0 ? void 0 : _c.percentage_change) ||
235801
- undefined, loading: isLoadingTranscriptsConversationHeadlineData, description: t('analyticsAnalyticsTranscriptsStats.avgMessagesPerConversationDescription') }), jsx(StatCard, { title: t('analyticsAnalyticsTranscriptsStats.avgCostPerConversation'), value: Number(((_d = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_cost_per_conversation) === null || _d === void 0 ? void 0 : _d.value) || 0).toFixed(2), percentage: ((_e = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_cost_per_conversation) === null || _e === void 0 ? void 0 : _e.percentage_change) ||
235802
- undefined, showDollarSign: true, loading: isLoadingTranscriptsConversationHeadlineData, description: t('analyticsAnalyticsTranscriptsStats.avgCostPerConversationDescription') }), jsx(StatCard, { title: t('analyticsAnalyticsTranscriptsStats.avgRating'), value: ((_f = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_rating) === null || _f === void 0 ? void 0 : _f.value) || 0, percentage: ((_g = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_rating) === null || _g === void 0 ? void 0 : _g.percentage_change) || undefined, loading: isLoadingTranscriptsConversationHeadlineData, description: t('analyticsAnalyticsTranscriptsStats.avgRatingDescription') })] }), jsxs("div", { className: "flex h-[calc(100vh-120px)]", children: [jsxs("div", { className: "w-full md:w-2/3 md:pr-6 overflow-y-auto md:border-r border-gray-200 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: [jsx("div", { className: "mb-6", children: jsxs("div", { className: "flex gap-2 mb-4 items-center", children: [jsxs("div", { className: "relative", children: [jsx(Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 h-4 w-4" }), jsx(Input, { placeholder: t('analyticsAnalyticsTranscriptsStats.placeholderTopics'), value: filters.topicSearch, onChange: (e) => setFilters({ ...filters, topicSearch: e.target.value }), className: "pl-10 w-[200px]" })] }), jsx("div", { className: "w-[200px]", children: jsx(UserFilterSelect, { tenantKey: tenantKey, value: filters.userSearch, onChange: (username) => setFilters({ ...filters, userSearch: username }), showSelfOption: false, className: "bg-transparent" }) }), isFetchingTranscriptsMessagesData && (filters.userSearch || filters.topicSearch) ? (jsx("div", { className: "animate-spin rounded-full h-5 w-5 border-b-2 border-blue-500 ml-2", "aria-hidden": "true" })) : (jsx(Button$1, { variant: "outline", onClick: handleClearFilters, className: "whitespace-nowrap", children: t('analyticsAnalyticsTranscriptsStats.clearAll') }))] }) }), jsxs("div", { className: "bg-gray-50 p-4 rounded-lg mb-6", children: [jsxs("div", { className: "flex flex-wrap gap-x-8 gap-y-2 text-sm text-gray-600", children: [jsxs("div", { "aria-label": t('analyticsAnalyticsTranscriptsStats.ariaTotalConversations'), children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.total_conversations, ' ', t('analyticsAnalyticsTranscriptsStats.conversations')] }), jsx("div", { children: "\u2022" }), jsxs("div", { children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.user_queries, ' ', t('analyticsAnalyticsTranscriptsStats.userQueries')] }), jsx("div", { children: "\u2022" }), jsxs("div", { children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.assistant_responses, ' ', t('analyticsAnalyticsTranscriptsStats.assistantResponses')] })] }), jsx("div", { className: "flex flex-wrap gap-x-8 gap-y-2 text-sm text-gray-600 mt-2", children: jsxs("div", { children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.average_sentiment_score, ' ', t('analyticsAnalyticsTranscriptsStats.averageSentimentScore')] }) })] }), jsx("div", { className: "flex flex-col gap-4", children: isLoadingTranscriptsMessagesData ? (
236283
+ return (jsxs("div", { className: "space-y-8", children: [jsxs("div", { className: "grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4 mb-6", children: [jsx(StatCard, { title: t('analyticsAnalyticsTranscriptsStats.avgMessagesPerConversation'), value: ((_e = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_messages_per_conversation) === null || _e === void 0 ? void 0 : _e.value) || 0, percentage: ((_f = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_messages_per_conversation) === null || _f === void 0 ? void 0 : _f.percentage_change) ||
236284
+ undefined, loading: isLoadingTranscriptsConversationHeadlineData, description: t('analyticsAnalyticsTranscriptsStats.avgMessagesPerConversationDescription') }), jsx(StatCard, { title: t('analyticsAnalyticsTranscriptsStats.avgCostPerConversation'), value: Number(((_g = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_cost_per_conversation) === null || _g === void 0 ? void 0 : _g.value) || 0).toFixed(2), percentage: ((_h = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_cost_per_conversation) === null || _h === void 0 ? void 0 : _h.percentage_change) ||
236285
+ undefined, showDollarSign: true, loading: isLoadingTranscriptsConversationHeadlineData, description: t('analyticsAnalyticsTranscriptsStats.avgCostPerConversationDescription') }), jsx(StatCard, { title: t('analyticsAnalyticsTranscriptsStats.avgRating'), value: ((_j = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_rating) === null || _j === void 0 ? void 0 : _j.value) || 0, percentage: ((_k = transcriptsConversationHeadlineData === null || transcriptsConversationHeadlineData === void 0 ? void 0 : transcriptsConversationHeadlineData.avg_rating) === null || _k === void 0 ? void 0 : _k.percentage_change) || undefined, loading: isLoadingTranscriptsConversationHeadlineData, description: t('analyticsAnalyticsTranscriptsStats.avgRatingDescription') })] }), jsxs("div", { className: "flex h-[calc(100vh-120px)]", children: [jsxs("div", { className: "w-full md:w-2/3 md:pr-6 overflow-y-auto md:border-r border-gray-200 [&::-webkit-scrollbar]:hidden [-ms-overflow-style:none] [scrollbar-width:none]", children: [jsx("div", { className: "mb-6", children: jsxs("div", { className: "flex gap-2 mb-4 items-center", children: [jsxs("div", { className: "relative", children: [jsx(Search, { className: "absolute left-3 top-1/2 transform -translate-y-1/2 text-gray-400 h-4 w-4" }), jsx(Input, { placeholder: t('analyticsAnalyticsTranscriptsStats.placeholderTopics'), value: filters.topicSearch, onChange: (e) => setFilters({ ...filters, topicSearch: e.target.value }), className: "pl-10 w-[200px]" })] }), jsx("div", { className: "w-[200px]", children: jsx(UserFilterSelect, { tenantKey: tenantKey, value: filters.userSearch, onChange: (username) => setFilters({ ...filters, userSearch: username }), showSelfOption: false, className: "bg-transparent" }) }), isFetchingTranscriptsMessagesData && (filters.userSearch || filters.topicSearch) ? (jsx("div", { className: "animate-spin rounded-full h-5 w-5 border-b-2 border-blue-500 ml-2", "aria-hidden": "true" })) : (jsx(Button$1, { variant: "outline", onClick: handleClearFilters, className: "whitespace-nowrap", children: t('analyticsAnalyticsTranscriptsStats.clearAll') }))] }) }), jsxs("div", { className: "bg-gray-50 p-4 rounded-lg mb-6", children: [jsxs("div", { className: "flex flex-wrap gap-x-8 gap-y-2 text-sm text-gray-600", children: [jsxs("div", { "aria-label": t('analyticsAnalyticsTranscriptsStats.ariaTotalConversations'), children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.total_conversations, ' ', t('analyticsAnalyticsTranscriptsStats.conversations')] }), jsx("div", { children: "\u2022" }), jsxs("div", { children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.user_queries, ' ', t('analyticsAnalyticsTranscriptsStats.userQueries')] }), jsx("div", { children: "\u2022" }), jsxs("div", { children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.assistant_responses, ' ', t('analyticsAnalyticsTranscriptsStats.assistantResponses')] })] }), jsx("div", { className: "flex flex-wrap gap-x-8 gap-y-2 text-sm text-gray-600 mt-2", children: jsxs("div", { children: [transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.summary.average_sentiment_score, ' ', t('analyticsAnalyticsTranscriptsStats.averageSentimentScore')] }) })] }), jsx("div", { className: "flex flex-col gap-4", children: isLoadingTranscriptsMessagesData ? (
235803
236286
  // Loading state
235804
236287
  jsx("div", { className: "space-y-4", children: Array.from({ length: 3 }).map((_, index) => (jsxs(Card$1, { className: "p-4 animate-pulse", children: [jsx("div", { className: "mb-3", children: jsx("div", { className: "h-4 bg-gray-200 rounded w-3/4" }) }), jsxs("div", { className: "flex flex-wrap gap-2 mb-3", children: [jsx("div", { className: "h-6 bg-gray-200 rounded w-16" }), jsx("div", { className: "h-6 bg-gray-200 rounded w-20" })] }), jsxs("div", { className: "flex flex-wrap gap-x-6 gap-y-2 mb-2", children: [jsx("div", { className: "h-4 bg-gray-200 rounded w-24" }), jsx("div", { className: "h-4 bg-gray-200 rounded w-20" })] }), jsxs("div", { className: "flex flex-wrap gap-x-6 gap-y-2", children: [jsx("div", { className: "h-4 bg-gray-200 rounded w-20" }), jsx("div", { className: "h-4 bg-gray-200 rounded w-24" })] })] }, index))) })) : (transcriptsMessagesData === null || transcriptsMessagesData === void 0 ? void 0 : transcriptsMessagesData.results) && transcriptsMessagesData.results.length > 0 ? (
235805
236288
  // Results
235806
236289
  transcriptsMessagesData.results.map((transcript) => {
235807
- var _a, _b, _c;
236290
+ var _a;
235808
236291
  return (jsxs(Card$1, { className: cn(`p-4 hover:shadow-md transition-shadow cursor-pointer border ${selectedTranscript === transcript.session
235809
236292
  ? 'border-blue-500 bg-blue-50'
235810
- : 'border-gray-200'}`), onClick: () => handleTranscriptSelect(transcript.session), children: [jsx("div", { className: "mb-3", children: jsx("p", { className: "text-gray-800", children: transcript.first_user_message }) }), jsxs("div", { className: "flex flex-wrap gap-2 mb-3", children: [((_a = transcript === null || transcript === void 0 ? void 0 : transcript.topics) === null || _a === void 0 ? void 0 : _a.length) > 0 &&
235811
- ((_b = transcript.topics) === null || _b === void 0 ? void 0 : _b.map((topic, index) => (jsx("span", { className: "bg-gray-100 text-gray-600 px-3 py-1 rounded-[5px] text-xs", children: topic }, index)))), jsx(TranscriptRollupBadges, { documentsCount: transcript.documents_count, toolCallsCount: transcript.tool_calls_count })] }), jsx("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-2 text-sm mb-2", children: jsxs("div", { className: cn('flex items-center gap-1', transcript.sentiment === 'negative'
235812
- ? 'text-blue-600'
235813
- : transcript.sentiment === 'positive'
235814
- ? 'text-green-600'
235815
- : 'text-gray-600'), children: [transcript.sentiment === 'negative' ? (jsx(ThumbsDown, { className: "h-4 w-4" })) : (jsx(ThumbsUp, { className: "h-4 w-4" })), jsxs("span", { children: [transcript.sentiment === 'negative'
235816
- ? t('analyticsAnalyticsTranscriptsStats.sentimentNegative')
235817
- : transcript.sentiment === 'positive'
235818
- ? t('analyticsAnalyticsTranscriptsStats.sentimentPositive')
235819
- : t('analyticsAnalyticsTranscriptsStats.sentimentNeutral'), ' ', t('analyticsAnalyticsTranscriptsStats.userSentiment')] })] }) }), jsxs("div", { className: "flex flex-wrap items-baseline gap-x-6 gap-y-2 text-xs text-gray-500 mb-2", children: [jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelUser'), ' ', jsx(UserProfileLink, { currentSPA: currentSPA, tenantKey: tenantKey, username: transcript === null || transcript === void 0 ? void 0 : transcript.username, display: identifyUser(transcript) })] }), jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelAgent'), ' ', jsx(AgentScopeLink, { uniqueId: transcript === null || transcript === void 0 ? void 0 : transcript.mentor_unique_id, name: transcript === null || transcript === void 0 ? void 0 : transcript.mentor })] })] }), jsx("div", { className: "flex flex-wrap gap-x-6 gap-y-2 text-xs text-gray-500 mb-2", children: jsxs("div", { className: "inline-flex flex-wrap items-center gap-1.5", children: [t('analyticsAnalyticsTranscriptsStats.labelModelCard'), ' ', (transcript === null || transcript === void 0 ? void 0 : transcript.model)
235820
- ? ((_c = turnDetails === null || turnDetails === void 0 ? void 0 : turnDetails.renderModel) !== null && _c !== void 0 ? _c : renderModelBadge)({
236293
+ : 'border-gray-200'}`), onClick: () => handleTranscriptSelect(transcript.session), children: [jsx("div", { className: "mb-3", children: jsx("p", { className: "text-gray-800", children: conversationTitle(transcript, t('analyticsAnalyticsTranscriptsStats.conversationFallbackTitle')) }) }), jsx(ConversationTopics, { topics: transcript.topics, className: "mb-3", children: jsx(TranscriptRollupBadges, { documentsCount: transcript.documents_count, toolCallsCount: transcript.tool_calls_count }) }), jsx("div", { className: "flex flex-wrap items-center gap-x-6 gap-y-2 text-sm mb-2", children: jsx(ConversationSentiment, { sentiment: transcript.sentiment || 'neutral', labels: sentimentLabels }) }), jsxs("div", { className: "flex flex-wrap items-baseline gap-x-6 gap-y-2 text-xs text-gray-500 mb-2", children: [jsx(TranscriptUserLines, { source: transcript, tenantKey: tenantKey, currentSPA: currentSPA }), jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelAgent'), ' ', jsx(AgentSettingsLink, { uniqueId: transcript === null || transcript === void 0 ? void 0 : transcript.mentor_unique_id, name: transcript === null || transcript === void 0 ? void 0 : transcript.mentor })] })] }), jsx("div", { className: "flex flex-wrap gap-x-6 gap-y-2 text-xs text-gray-500 mb-2", children: jsxs("div", { className: "inline-flex flex-wrap items-center gap-1.5", children: [t('analyticsAnalyticsTranscriptsStats.labelModelCard'), ' ', (transcript === null || transcript === void 0 ? void 0 : transcript.model)
236294
+ ? ((_a = turnDetails === null || turnDetails === void 0 ? void 0 : turnDetails.renderModel) !== null && _a !== void 0 ? _a : renderModelBadge)({
235821
236295
  model: transcript.model,
235822
236296
  provider: providerOf(transcript),
235823
236297
  tenantKey,
@@ -235859,14 +236333,14 @@ function AnalyticsTranscriptsStats({ tenantKey, currentSPA, mentorId, selectedMe
235859
236333
  /* Error or no data state */
235860
236334
  jsx("div", { className: "flex items-center justify-center h-full text-gray-400", children: jsxs("div", { className: "text-center", children: [jsx(X$1, { className: "h-6 w-6 mx-auto mb-2 text-red-400" }), jsx("p", { children: t('analyticsAnalyticsTranscriptsStats.noTranscriptDetails') }), jsx("p", { className: "text-sm mt-1", children: t('analyticsAnalyticsTranscriptsStats.unableToLoadTranscript') })] }) })) : (
235861
236335
  /* Data loaded successfully */
235862
- jsxs("div", { className: "space-y-4", children: [jsx("div", { className: "mb-4", children: jsxs("div", { className: "text-sm text-gray-500 space-y-1", children: [jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelUser'), ' ', jsx(UserProfileLink, { currentSPA: currentSPA, tenantKey: tenantKey, username: (_h = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _h === void 0 ? void 0 : _h.username, display: identifyUser(transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) })] }), jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelAgent'), ' ', jsx(AgentScopeLink, { uniqueId: (_j = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _j === void 0 ? void 0 : _j.mentor_unique_id, name: (_k = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _k === void 0 ? void 0 : _k.mentor })] }), jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [t('analyticsAnalyticsTranscriptsStats.labelModel'), ' ', ((_l = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _l === void 0 ? void 0 : _l.model)
235863
- ? ((_m = turnDetails === null || turnDetails === void 0 ? void 0 : turnDetails.renderModel) !== null && _m !== void 0 ? _m : renderModelBadge)({
236336
+ jsxs("div", { className: "space-y-4", children: [jsx("div", { className: "mb-4", children: jsxs("div", { className: "text-sm text-gray-500 space-y-1", children: [jsx(TranscriptUserLines, { source: transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary, tenantKey: tenantKey, currentSPA: currentSPA }), jsxs("div", { children: [t('analyticsAnalyticsTranscriptsStats.labelAgent'), ' ', jsx(AgentSettingsLink, { uniqueId: (_l = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _l === void 0 ? void 0 : _l.mentor_unique_id, name: (_m = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _m === void 0 ? void 0 : _m.mentor })] }), jsxs("div", { className: "flex flex-wrap items-center gap-1.5", children: [t('analyticsAnalyticsTranscriptsStats.labelModel'), ' ', ((_o = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.summary) === null || _o === void 0 ? void 0 : _o.model)
236337
+ ? ((_p = turnDetails === null || turnDetails === void 0 ? void 0 : turnDetails.renderModel) !== null && _p !== void 0 ? _p : renderModelBadge)({
235864
236338
  model: transcriptsMessagesDetailsData.summary.model,
235865
- provider: (_o = providerOf(transcriptsMessagesDetailsData.summary)) !== null && _o !== void 0 ? _o : providerOfTurns(transcriptsMessagesDetailsData.messages),
236339
+ provider: detailProvider,
235866
236340
  tenantKey,
235867
236341
  mentorId: detailMentorId,
235868
236342
  })
235869
- : '-'] }), jsx(TranscriptDocumentsButton, { detail: transcriptsMessagesDetailsData, className: "mt-2" })] }) }), jsx("div", { className: "space-y-4 pb-4", children: ((_p = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _p === void 0 ? void 0 : _p.length) > 0 ? ((_q = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _q === void 0 ? void 0 : _q.map((message, index) => {
236343
+ : '-'] }), jsx(TranscriptDocumentsButton, { detail: transcriptsMessagesDetailsData, className: "mt-2" })] }) }), jsx("div", { className: "space-y-4 pb-4", children: ((_q = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _q === void 0 ? void 0 : _q.length) > 0 ? ((_r = transcriptsMessagesDetailsData === null || transcriptsMessagesDetailsData === void 0 ? void 0 : transcriptsMessagesDetailsData.messages) === null || _r === void 0 ? void 0 : _r.map((message, index) => {
235870
236344
  var _a, _b;
235871
236345
  return (jsxs(React__default.Fragment, { children: [((message === null || message === void 0 ? void 0 : message.human) || !!((_a = message === null || message === void 0 ? void 0 : message.human_files) === null || _a === void 0 ? void 0 : _a.length)) && (jsxs("div", { className: "p-3 rounded-lg bg-blue-100 ml-4", children: [jsx("div", { className: "flex justify-between items-start mb-1", children: jsx("span", { className: "font-medium text-sm", children: t('analyticsAnalyticsTranscriptsStats.roleUser') }) }), message.human && (jsx("p", { className: "text-sm", children: getMessageContent(message.human) })), jsx(TranscriptFiles, { files: message.human_files })] })), ((message === null || message === void 0 ? void 0 : message.ai) || !!((_b = message === null || message === void 0 ? void 0 : message.ai_files) === null || _b === void 0 ? void 0 : _b.length)) && (jsxs("div", { className: "p-3 rounded-lg bg-white mr-4 border", style: { borderColor: 'oklch(.922 0 0)' }, children: [jsx("div", { className: "flex justify-between items-start mb-1", children: jsx("span", { className: "font-medium text-sm", children: t('analyticsAnalyticsTranscriptsStats.roleAgent') }) }), message.ai && jsx(Markdown, { children: getMessageContent(message.ai) }), jsx(TranscriptFiles, { files: message.ai_files }), jsx(TranscriptTurnDetails, { turn: message, tenantKey: tenantKey, mentorId: detailMentorId, ...turnDetails })] }))] }, index));
235872
236346
  })) : (jsx("div", { className: "text-center text-gray-500 py-8", children: jsx("p", { children: t('analyticsAnalyticsTranscriptsStats.noMessages') }) })) })] })) })] }) }))] }));
@@ -238585,6 +239059,43 @@ function AnalyticsAuditLogStats({ tenantKey, currentSPA, mentorId, userId, selec
238585
239059
  : t('analyticsAnalyticsAuditLogStats.scopePlatformHint') })] })), activeScope === 'platform' ? (jsx(AnalyticsPlatformAuditLog, { platformKey: tenantKey, timezone: timezone, currentSPA: currentSPA })) : (jsx(AgentAuditLogView, { tenantKey: tenantKey, currentSPA: currentSPA, mentorId: mentorId, userId: userId, selectedMentorId: selectedMentorId }))] }));
238586
239060
  }
238587
239061
 
239062
+ /**
239063
+ * An agent named in a stats row, clickable to re-scope the whole analytics
239064
+ * page to that agent — the same thing the control bar's picker does, reached
239065
+ * from the data instead of from a search box.
239066
+ *
239067
+ * It renders as plain text wherever re-scoping is impossible or pointless: on
239068
+ * per-agent pages (no picker, so nothing would visibly change), on rows whose
239069
+ * agent the payload identifies by name alone, and on rows of the agent the
239070
+ * page is already scoped to (every row, once the picker names one agent — a
239071
+ * blue link there promised something and delivered nothing). Safe inside
239072
+ * clickable rows and cards — neither its clicks nor its key presses reach
239073
+ * their handlers.
239074
+ */
239075
+ function AgentScopeLink({ uniqueId, name, fallback = '-', onScoped, className, testId, }) {
239076
+ const t = useT();
239077
+ const setScopedMentor = useAnalyticsScopeSetter();
239078
+ const { scopedMentor } = useAnalyticsScope();
239079
+ const display = name || uniqueId || fallback;
239080
+ const isCurrent = !!uniqueId && (scopedMentor === null || scopedMentor === void 0 ? void 0 : scopedMentor.uniqueId) === uniqueId;
239081
+ if (!setScopedMentor || !uniqueId || isCurrent) {
239082
+ return (jsx("span", { className: className, "data-testid": testId, children: display }));
239083
+ }
239084
+ return (jsx("button", { type: "button", onClick: (event) => {
239085
+ event.stopPropagation();
239086
+ // No `dbId`: these payloads carry the `unique_id` only. AnalyticsLayout
239087
+ // resolves the rest before the scope reaches anyone — see
239088
+ // AnalyticsScopedMentor.
239089
+ setScopedMentor({ uniqueId, name: name || uniqueId });
239090
+ onScoped === null || onScoped === void 0 ? void 0 : onScoped();
239091
+ },
239092
+ // Rows that open on Enter/Space would otherwise swallow the key press.
239093
+ onKeyDown: (event) => event.stopPropagation(),
239094
+ // Truncates inside an `inline-flex` box so the name keeps the baseline
239095
+ // of the "Agent:" label beside it (see UserProfileLink).
239096
+ className: cn('inline-flex max-w-full cursor-pointer text-left hover:text-blue-600 hover:underline focus:text-blue-600 focus:outline-none', className), "aria-label": t('analyticsAgentScopeLink.scopeToAgent', { name: display }), "data-testid": testId, children: jsx("span", { className: "min-w-0 truncate", children: display }) }));
239097
+ }
239098
+
238588
239099
  /**
238589
239100
  * The global and cross-mentor endpoints both cap `page_size` at 25 server-side,
238590
239101
  * so we ask for a size every scope can honor rather than paginating
@@ -250621,5 +251132,5 @@ var trainOrDeleteModal = /*#__PURE__*/Object.freeze({
250621
251132
  TrainOrDeleteModal: TrainOrDeleteModal
250622
251133
  });
250623
251134
 
250624
- export { ACCESS_COURSE_LABEL, ALL_CATEGORIES, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentScopeLink, AgentSkills, AlertsTab, AnalyticsAgentPicker, AnalyticsAreaChart, AnalyticsAuditLogStats, AnalyticsBarChart, AnalyticsControlBar, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsGlobalFiltersProvider, AnalyticsLayout, AnalyticsLlmUsageStats, AnalyticsMemoryStats, AnalyticsMonetizationStats, AnalyticsNotice, AnalyticsOverview, AnalyticsPlatformAuditLog, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsScopeProvider, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTraces, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, ApplyWizard, AuditLogChangesView, AuditLogJsonView, BUY_NOW_LABEL, BillingTab, CATALOGS, CHART_ORDINAL_RAMP, CHART_SERIES_COLORS, CHART_SINGLE_SERIES_COLOR, CREATE_AGENT_LABELS, CUA_DRIVER_REPO_URL, CUA_DRIVER_TAURI_COMMANDS, CUA_DRIVER_TAURI_EVENTS, CardInfoIcon, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChartLoading, ChartTooltipCard, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CredentialsList, CreditBalance, CustomDateRangePicker, CustomTooltip, DEFAULT_COWORK_REQUIRED_SIZE_GB, DEFAULT_LOCALE, DEFAULT_USER_IDENTITY_ORDER, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DocumentSidebar, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GradebookTab, GroupsFilterDropdown, HostPortChipInput, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, LOCAL_LLM_CHANGED_EVENT, LOCAL_MODELS, LlmModelBadge, Loader, LocalLLMTab, LocalModelsContent, LoginButton, MACOS_PERMISSIONS_COMMANDS, MEMORY_PAGE_SIZE, Markdown, MemoryAdminTab, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_FIELD_TYPES, ONBOARDING_SECTORS, OnboardingField, OnboardingShell, OnboardingWizard, PLATFORM_AUDIT_DEEP_PAGING_THRESHOLD, PLATFORM_AUDIT_PAGE_SIZE, PaywallModal, PlacementExam, PlacementExamsDropdown, PlatformAuditLogDetailSheet, PlatformNavbar, PlatformNavbarSearch, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RankedBars, RenameProjectModal, ResumeBox, ResumeTab, RetrievedDocumentsButton, RichTextEditor, SERVICE_COLOR_ORDER, SUPPORTED_LOCALES, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, SkillsList, SlashSkillPicker, SourceChip, Spinner, StatCard, StepHeader, SummerNoteTextEditor, TAURI_COMMANDS, TAURI_EVENTS, TRACES_PAGE_SIZE, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolCallIndicator, ToolDialogs, TopBanner, TranscriptFileCards, TranscriptRollupBadges, TranscriptTurnDetails, TrendSparkline, USER_ONBOARDING_FORM_SLUG, USER_ONBOARDING_FORM_VERSION, USER_ONBOARDING_SUBMISSION_SLUG, UpgradePackageModal, UserAvatar, UserOnboardingWizard, UserProfileDialog, UserProfileLink, Version, VirtualMachineAdminTab, VirtualMachineNetworkSection, WebContainersI18nProvider, WorkflowSidebar, addBookmarksTab, areChartFiltersEqual, availablePlacementExams, buildOnboardingAgentPath, buildUserOnboardingFormMetadata, buildUserOnboardingSubmissionMetadata, coerceOnboardingAgent, coerceOnboardingAgents, coerceUserOnboardingForm, colorForRank, colorForSeries, conversationDocuments, emptyUserOnboardingForm, findLastResumeBlock, findOnboardingAgent, findSequentialParent, flattenVerticalBlocks, formatAuditTimestamp, formatCompactNumber, formatFileSize, formatLatencySeconds, formatResult, formatTimeZoneLabel, getCatalog, getFirstAvailableUnit, getFriendlyToolName, getLLMModelDisplayName, getLocalLLMModel, getLocalLLMToolSupport, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getQueryLabel, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, granularityForFilter, hasDistinctName, hasOnboardingContent, humanizeAuditToken, humanizeFieldName, inBrowserPrint, inIframe, inferProviderKeysFromModel, initialCuaDriverInstallState, initialModelDownloadState, isCoworkEnabled, isEmailLike, isFileReference, isLlmUsageForbidden, isLlmUsageUnavailable, isLocalLLMEnabled, isPlatformNavbarCreditBalanceVisible, isSlashCommandToken, isTauriApp, isValidLocale, isValidTimeZone, llmUsageDateArgs, components as markdownComponents, modelSupportsCowork, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, readUserOnboardingForm, readUserOnboardingSubmission, readUserOnboardingSubmissions, resolveAuditTimeZone, resolveCreateAgentLabels, resolveUserIdentity, sanitizeCss, setCoworkEnabled, setLocalLLMEnabled, setLocalLLMModel, setLocalLLMToolSupport, smallestCoworkModel, summarizeTranscriptTurns, toFileReference, toRetrievedDocuments, toToolCallInfos, useAnalyticsGlobalFilters, useAnalyticsScope, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useCredentialsSchemaLogos, useCuaDriver, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLlmDisplayName, useLlmProviderCatalogue, useLlmTraces, useLlmUsage, useLocalStorage, useMemory, useModelDownload, useMonetization, useOverview, usePlatformAuditLabels, usePlatformAuditLog, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useScopedMentorDbId, useScopedMentorId, useSelectedLocalModel, useSlashSkillPicker, useSlashSkills, useT, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers, useWebContainersI18n, useWebContainersLocale };
251135
+ export { ACCESS_COURSE_LABEL, ALL_CATEGORIES, AccessTimeHeatmap, AccessiblePaginate, AddMentorToProjectModal, AddSkillDialog, Admin, AdvancedTab, AgentConfigPrompts, AgentScopeLink, AgentSettingsLauncherProvider, AgentSettingsLink, AgentSkills, AlertsTab, AnalyticsAgentPicker, AnalyticsAreaChart, AnalyticsAuditLogStats, AnalyticsBarChart, AnalyticsControlBar, AnalyticsCourseDetail, AnalyticsCourses, AnalyticsFinancialStats, AnalyticsGlobalFiltersProvider, AnalyticsLayout, AnalyticsLlmUsageStats, AnalyticsMemoryStats, AnalyticsMonetizationStats, AnalyticsNotice, AnalyticsOverview, AnalyticsPlatformAuditLog, AnalyticsProgramDetail, AnalyticsPrograms, AnalyticsReportDownload, AnalyticsReports, AnalyticsScopeProvider, AnalyticsSettingsProvider, AnalyticsTopicsStats, AnalyticsTraces, AnalyticsTranscriptsStats, AnalyticsUsersStats, AppleRestrictionModal, ApplyWizard, AuditLogChangesView, AuditLogJsonView, BUY_NOW_LABEL, BillingTab, CATALOGS, CHART_ORDINAL_RAMP, CHART_SERIES_COLORS, CHART_SINGLE_SERIES_COLOR, CREATE_AGENT_LABELS, CUA_DRIVER_REPO_URL, CUA_DRIVER_TAURI_COMMANDS, CUA_DRIVER_TAURI_EVENTS, CardInfoIcon, CategorizedDropdownMenu, ChartCardWrapper, ChartFiltersProvider, ChartLoading, ChartTooltipCard, ChatContext, ChatPrivacyToggle, ChatProvider, CompanyDialog, ConnectorManagementDialog, ConversationSentiment, ConversationTopics, CopyButtonIcon, CourseAccessGuard, CourseCardSkeleton, CourseContentLoading, CourseOutline, CourseOutlineContext, CourseOutlineDrawer, CreateAgentForm, CreateAgentModal, CreateProjectModal, CreateWorkflowModal, CredentialBox, CredentialMiniBoxSkeleton, CredentialsList, CreditBalance, CustomDateRangePicker, CustomTooltip, DEFAULT_COWORK_REQUIRED_SIZE_GB, DEFAULT_LOCALE, DEFAULT_USER_IDENTITY_ORDER, DefaultEmptyBox, DeleteProjectModal, DeleteWorkflowModal, DiscoverContentCard, DiscoverFacetsFilter, DiscoverFilterDrawer, DocumentSidebar, DropdownMenu, DropdownMenuCheckboxItem, DropdownMenuContent, DropdownMenuGroup, DropdownMenuItem, DropdownMenuLabel, DropdownMenuPortal, DropdownMenuRadioGroup, DropdownMenuRadioItem, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger, ENROLL_NOW_COURSE_STARTING_SOON_LABEL, ENROLL_NOW_LABEL, EditAlertDialog, EducationBox, EducationDialog, EducationTab, EdxIframeContext, EmptyStats, ExperienceBox, ExperienceDialog, ExperienceTab, FacetFilterContext, Footer, GradebookTab, GroupsFilterDropdown, HostPortChipInput, INVITATION_ONLY_LABEL, InstitutionDialog, IntegrationsTab, InviteUserContent, InviteUserDialog, InvitedUsersDialog, LOCAL_LLM_CHANGED_EVENT, LOCAL_MODELS, LlmModelBadge, Loader, LocalLLMTab, LocalModelsContent, LoginButton, MACOS_PERMISSIONS_COMMANDS, MEMORY_PAGE_SIZE, Markdown, MemoryAdminTab, MinimumMentorAlert, MonetizationTab, NotificationDisplay, NotificationDropdown, ONBOARDING_FIELD_TYPES, ONBOARDING_SECTORS, OnboardingField, OnboardingShell, OnboardingWizard, PLATFORM_AUDIT_DEEP_PAGING_THRESHOLD, PLATFORM_AUDIT_PAGE_SIZE, PaywallModal, PlacementExam, PlacementExamsDropdown, PlatformAuditLogDetailSheet, PlatformNavbar, PlatformNavbarSearch, Profile, ProfileTimeChart, ProgressDots, ProjectActionButtons, ProjectFilesModal, ProjectInstructionsModal, ProjectLandingPage, ProjectMentorsList, ProjectsPage, REQUEST_ACCESS_COURSE_STARTING_SOON_LABEL, REQUEST_ACCESS_LABEL, RankedBars, RenameProjectModal, ResumeBox, ResumeTab, RetrievedDocumentsButton, RichTextEditor, SERVICE_COLOR_ORDER, SUPPORTED_LOCALES, SandboxConfig, SearchableMultiSelect, SendNotificationDialog, SignupButton, SkeletonActivityStatBox, SkeletonAddSkillsLoading, SkeletonCreatePathwaySearchList, SkeletonDiscoverFilterBox, SkeletonEducationBox, SkeletonMultiplier, SkeletonPathwayBox, SkeletonProfileInfoCard, SkeletonSkillBox, SkillBox, SkillDetailModal, SkillLeaderboardChart, SkillsBox, SkillsList, SlashSkillPicker, SourceChip, Spinner, StatCard, StepHeader, SummerNoteTextEditor, TAURI_COMMANDS, TAURI_EVENTS, TRACES_PAGE_SIZE, TenantSwitcher, TimeFilter, TimeTrackingProvider, TimedExam, ToolCallIndicator, ToolDialogs, TopBanner, TranscriptFileCards, TranscriptRollupBadges, TranscriptTurnDetails, TrendSparkline, USER_ONBOARDING_FORM_SLUG, USER_ONBOARDING_FORM_VERSION, USER_ONBOARDING_SUBMISSION_SLUG, UpgradePackageModal, UserAvatar, UserOnboardingWizard, UserProfileDialog, UserProfileLink, Version, VirtualMachineAdminTab, VirtualMachineNetworkSection, WebContainersI18nProvider, WorkflowSidebar, addBookmarksTab, areChartFiltersEqual, availablePlacementExams, buildOnboardingAgentPath, buildUserOnboardingFormMetadata, buildUserOnboardingSubmissionMetadata, coerceOnboardingAgent, coerceOnboardingAgents, coerceUserOnboardingForm, colorForRank, colorForSeries, conversationDocuments, conversationTitle, conversationTopics, emptyUserOnboardingForm, findLastResumeBlock, findOnboardingAgent, findSequentialParent, firstHumanMessage, flattenVerticalBlocks, formatAuditTimestamp, formatCompactNumber, formatFileSize, formatLatencySeconds, formatResult, formatSessionDate, formatTimeZoneLabel, getCatalog, getFirstAvailableUnit, getFriendlyToolName, getLLMModelDisplayName, getLocalLLMModel, getLocalLLMToolSupport, getNextUnitIframe, getOrg, getParentBlockById, getParentsInfosFromSublessonId, getPreviousUnitIframe, getQueryLabel, getRandomCourseImage, getSectorById, getTenant, getUnitToIframe, getUserId, getUserName, granularityForFilter, hasDistinctName, hasOnboardingContent, humanizeAuditToken, humanizeFieldName, inBrowserPrint, inIframe, inferProviderKeysFromModel, initialCuaDriverInstallState, initialModelDownloadState, isCoworkEnabled, isEmailLike, isFileReference, isLlmUsageForbidden, isLlmUsageUnavailable, isLocalLLMEnabled, isPlatformNavbarCreditBalanceVisible, isSlashCommandToken, isTauriApp, isValidLocale, isValidTimeZone, llmUsageDateArgs, components as markdownComponents, modelSupportsCowork, onboardingPrimaryButtonClass, onboardingSecondaryButtonClass, previewPlan, readUserOnboardingForm, readUserOnboardingSubmission, readUserOnboardingSubmissions, resolveAuditTimeZone, resolveCreateAgentLabels, resolveUserIdentity, sanitizeCss, setCoworkEnabled, setLocalLLMEnabled, setLocalLLMModel, setLocalLLMToolSupport, smallestCoworkModel, summarizeTranscriptTurns, toFileReference, toRetrievedDocuments, toToolCallInfos, useAgentSettingsLauncher, useAnalyticsGlobalFilters, useAnalyticsScope, useAnalyticsSettings, useAuditLog, useCatalogSearch, useChartFilters, useChatPrivacy, useChatState, useCourseDetail, useCourseMetadata, useCourses, useCredentialsSchemaLogos, useCuaDriver, useDiscover, useEdxIframe, useFinancial, useIframeMessageHandler, useLlmDisplayName, useLlmProviderCatalogue, useLlmTraces, useLlmUsage, useLocalStorage, useMemory, useModelDownload, useMonetization, useOverview, usePlatformAuditLabels, usePlatformAuditLog, useProfileActivityStats, useProfileCredentials, useProfilePathways, useProfilePrograms, useProfileSkills, useProfileTimeSpent, usePrograms, useReports, useScopedMentorDbId, useScopedMentorId, useSelectedLocalModel, useSlashSkillPicker, useSlashSkills, useT, useTauri, useTimeTracking, useTopics, useTranscripts, useUserCourses, useUserMetadata, useUsers, useWebContainersI18n, useWebContainersLocale };
250625
251136
  //# sourceMappingURL=index.esm.js.map