living-ai-documentation 2.0.0 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/frontend/agents.js +288 -0
- package/dist/src/frontend/config.js +3 -2
- package/dist/src/frontend/diagram/color-picker.js +72 -0
- package/dist/src/frontend/diagram/defaults-modal.js +302 -0
- package/dist/src/frontend/diagram/edge-panel.js +110 -11
- package/dist/src/frontend/diagram/main.js +5 -8
- package/dist/src/frontend/diagram/network.js +16 -7
- package/dist/src/frontend/diagram/node-panel.js +104 -2
- package/dist/src/frontend/diagram.html +52 -29
- package/dist/src/frontend/i18n/en.json +43 -1
- package/dist/src/frontend/i18n/fr.json +43 -1
- package/dist/src/frontend/index.html +156 -33
- package/dist/src/frontend/workspace/app.js +439 -67
- package/dist/src/frontend/workspace/app.js.map +1 -1
- package/dist/src/frontend/workspace/app.ts +582 -84
- package/dist/src/frontend/workspace/index.html +232 -82
- package/dist/src/frontend/workspace/persistence.js +61 -0
- package/dist/src/frontend/workspace/persistence.js.map +1 -1
- package/dist/src/frontend/workspace/persistence.ts +111 -0
- package/dist/src/frontend/workspace/styles.css +293 -34
- package/dist/src/lib/config.d.ts +23 -0
- package/dist/src/lib/config.d.ts.map +1 -1
- package/dist/src/lib/config.js +16 -0
- package/dist/src/lib/config.js.map +1 -1
- package/dist/src/routes/config.d.ts.map +1 -1
- package/dist/src/routes/config.js +13 -0
- package/dist/src/routes/config.js.map +1 -1
- package/dist/src/routes/workspace.d.ts.map +1 -1
- package/dist/src/routes/workspace.js +528 -6
- package/dist/src/routes/workspace.js.map +1 -1
- package/package.json +2 -2
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"nav.toggle_sidebar": "Afficher/masquer le panneau",
|
|
20
20
|
"nav.search_placeholder": "Rechercher dans les docs…",
|
|
21
21
|
"nav.search_mobile_placeholder": "Rechercher…",
|
|
22
|
-
"nav.workspace": "Workspace",
|
|
22
|
+
"nav.workspace": "Workspace Agentique",
|
|
23
23
|
"nav.toggle_dark": "Basculer le mode sombre",
|
|
24
24
|
"nav.export": "Exporter",
|
|
25
25
|
"nav.toggle_categories": "Afficher/masquer le regroupement par catégorie",
|
|
@@ -29,12 +29,30 @@
|
|
|
29
29
|
"nav.export_all_pdf": "Exporter tous les documents en PDF",
|
|
30
30
|
"nav.new_folder": "Nouveau dossier",
|
|
31
31
|
"nav.new_document": "Nouveau document",
|
|
32
|
+
"nav.ai_agents": "Agents IA",
|
|
32
33
|
"nav.word_cloud": "☁ Nuage de mots",
|
|
33
34
|
"nav.diagram": "◇ Diagramme",
|
|
34
35
|
"nav.ai_context": "Contexte IA",
|
|
35
36
|
"nav.files": "📁 Fichiers joints",
|
|
36
37
|
"nav.admin": "⚙ Admin",
|
|
37
38
|
|
|
39
|
+
"agents.title": "Agents IA",
|
|
40
|
+
"agents.subtitle": "Lancer un agent configuré dans le workspace.",
|
|
41
|
+
"agents.empty": "Aucun agent workspace n'est encore configuré.",
|
|
42
|
+
"agents.ready": "Prêt",
|
|
43
|
+
"agents.requires_input": "Input requis",
|
|
44
|
+
"agents.not_ready": "Configuration incomplète",
|
|
45
|
+
"agents.no_provider": "Aucun provider LLM",
|
|
46
|
+
"agents.input_title": "Input agent",
|
|
47
|
+
"agents.input_hint": "Renseignez l'input nécessaire à cette exécution.",
|
|
48
|
+
"agents.run": "Lancer l'agent",
|
|
49
|
+
"agents.loading": "Exécution de l'agent…",
|
|
50
|
+
"agents.success": "Exécution terminée",
|
|
51
|
+
"agents.failure": "Échec de l'exécution",
|
|
52
|
+
"agents.open_document": "Ouvrir le document",
|
|
53
|
+
"agents.load_failed": "Impossible de charger les agents workspace.",
|
|
54
|
+
"agents.run_failed": "Échec de l'exécution de l'agent.",
|
|
55
|
+
|
|
38
56
|
"files.title": "📁 Fichiers joints",
|
|
39
57
|
"files.empty": "Aucun fichier — téléversez-en un depuis un document (trombone, glisser-déposer ou coller).",
|
|
40
58
|
"files.replace": "Remplacer",
|
|
@@ -591,7 +609,26 @@
|
|
|
591
609
|
"diagram.toolbar.shape_editor": "Éditeur de formes personnalisées",
|
|
592
610
|
"diagram.toolbar.arrow": "Flèche (F)",
|
|
593
611
|
"diagram.toolbar.delete": "Supprimer (Suppr)",
|
|
612
|
+
"diagram.toolbar.defaults": "Valeurs par défaut — configurer les tailles, couleurs et styles par défaut",
|
|
594
613
|
"diagram.toolbar.align_guides": "Guides d'alignement — indique l'alignement entre formes du même type",
|
|
614
|
+
"diagram.defaults.title": "Valeurs par défaut",
|
|
615
|
+
"diagram.defaults.section.arrows": "Flèches",
|
|
616
|
+
"diagram.defaults.section.shapes": "Formes",
|
|
617
|
+
"diagram.defaults.field.direction": "Direction",
|
|
618
|
+
"diagram.defaults.field.style": "Style",
|
|
619
|
+
"diagram.defaults.field.font_size": "Taille police",
|
|
620
|
+
"diagram.defaults.field.width": "L",
|
|
621
|
+
"diagram.defaults.field.height": "H",
|
|
622
|
+
"diagram.defaults.field.color": "Couleur",
|
|
623
|
+
"diagram.defaults.style.solid": "Plein",
|
|
624
|
+
"diagram.defaults.style.dashed": "Pointillé",
|
|
625
|
+
"diagram.defaults.shape.box": "Rectangle",
|
|
626
|
+
"diagram.defaults.shape.ellipse": "Ellipse",
|
|
627
|
+
"diagram.defaults.shape.circle": "Cercle",
|
|
628
|
+
"diagram.defaults.shape.database": "Base de données",
|
|
629
|
+
"diagram.defaults.shape.actor": "Acteur",
|
|
630
|
+
"diagram.defaults.shape.postit": "Post-it",
|
|
631
|
+
"diagram.defaults.shape.text_free": "Texte libre",
|
|
595
632
|
"diagram.toolbar.grid": "Grille / Magnétisme (G)",
|
|
596
633
|
"diagram.toolbar.edge_style": "Basculer flèches courbes / droites",
|
|
597
634
|
"diagram.toolbar.resize_corner": "Mode redimensionnement : coin fixe (cliquer pour centre fixe)",
|
|
@@ -609,6 +646,8 @@
|
|
|
609
646
|
"diagram.sidebar.empty": "Aucun diagramme",
|
|
610
647
|
"diagram.sidebar.delete_title": "Supprimer",
|
|
611
648
|
|
|
649
|
+
"diagram.node_panel.color": "Couleur de la forme",
|
|
650
|
+
"diagram.node_panel.save_as_default": "Enregistrer comme valeur par défaut pour ce type de forme",
|
|
612
651
|
"diagram.node_panel.lock": "Verrouiller la sélection",
|
|
613
652
|
"diagram.node_panel.unlock": "Déverrouiller la sélection",
|
|
614
653
|
"diagram.node_panel.edit_label": "Modifier le texte (double-clic)",
|
|
@@ -648,6 +687,9 @@
|
|
|
648
687
|
"diagram.link_panel.save_btn": "Enregistrer",
|
|
649
688
|
"diagram.link_panel.remove_btn": "Retirer",
|
|
650
689
|
|
|
690
|
+
"diagram.edge_panel.font_size_value": "Taille de police",
|
|
691
|
+
"diagram.edge_panel.color": "Couleur de la flèche",
|
|
692
|
+
"diagram.edge_panel.save_as_default": "Enregistrer comme valeur par défaut pour les flèches",
|
|
651
693
|
"diagram.edge_panel.lock": "Verrouiller la flèche",
|
|
652
694
|
"diagram.edge_panel.unlock": "Déverrouiller la flèche",
|
|
653
695
|
"diagram.edge_panel.no_arrow": "Trait simple",
|
|
@@ -58,6 +58,7 @@
|
|
|
58
58
|
<script defer src="/accuracy-gauge.js"></script>
|
|
59
59
|
<script defer src="/validate.js"></script>
|
|
60
60
|
<script defer src="/export.js"></script>
|
|
61
|
+
<script defer src="/agents.js"></script>
|
|
61
62
|
<script defer src="/modals/diagram-link-modal.js"></script>
|
|
62
63
|
<script defer src="/modals/new-folder-modal.js"></script>
|
|
63
64
|
<script defer src="/modals/new-doc-modal.js"></script>
|
|
@@ -531,61 +532,47 @@
|
|
|
531
532
|
<!-- ── Header ── -->
|
|
532
533
|
<header
|
|
533
534
|
id="header"
|
|
534
|
-
class="no-print flex items-center justify-between px-
|
|
535
|
+
class="no-print flex items-center justify-between px-6 h-[72px] border-b border-gray-200 dark:border-gray-800 bg-white/90 dark:bg-gray-900/90 backdrop-blur shrink-0 z-10 shadow-sm"
|
|
535
536
|
>
|
|
536
537
|
<div class="flex items-center gap-3">
|
|
537
538
|
<span
|
|
538
539
|
onclick="toggleSidebar()"
|
|
539
540
|
data-i18n-title="nav.toggle_sidebar"
|
|
540
541
|
title="Toggle sidebar"
|
|
541
|
-
class="
|
|
542
|
-
|
|
543
|
-
>
|
|
544
|
-
<span id="app-title" class="font-semibold text-base tracking-tight"
|
|
545
|
-
>Living Documentation</span
|
|
542
|
+
class="select-none cursor-pointer hover:opacity-70 transition-opacity flex items-center justify-center w-[38px] h-[38px] rounded-[10px] bg-gray-900 dark:bg-gray-800 border border-gray-600 text-white text-xs font-black"
|
|
543
|
+
>LD</span
|
|
546
544
|
>
|
|
545
|
+
<div>
|
|
546
|
+
<div id="app-title" class="font-[760] text-[15px] tracking-tight leading-tight">Living AI Documentation</div>
|
|
547
|
+
<div id="app-subtitle" class="text-[12px] text-gray-400 mt-[2px]"></div>
|
|
548
|
+
</div>
|
|
547
549
|
</div>
|
|
548
550
|
|
|
549
551
|
<div class="flex items-center gap-2">
|
|
550
|
-
<!-- Search (desktop — mirrors sidebar search) -->
|
|
551
|
-
<div class="relative hidden sm:block">
|
|
552
|
-
<input
|
|
553
|
-
id="header-search"
|
|
554
|
-
type="search"
|
|
555
|
-
data-i18n-placeholder="nav.search_placeholder"
|
|
556
|
-
placeholder="Search docs…"
|
|
557
|
-
class="w-56 pl-8 pr-3 py-1.5 text-sm rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
558
|
-
/>
|
|
559
|
-
<span
|
|
560
|
-
class="absolute left-2.5 top-2 text-gray-400 text-sm pointer-events-none"
|
|
561
|
-
>🔍</span
|
|
562
|
-
>
|
|
563
|
-
</div>
|
|
564
|
-
|
|
565
552
|
<!-- Workspace -->
|
|
566
553
|
<a
|
|
567
554
|
href="/workspace"
|
|
568
555
|
data-i18n="nav.workspace"
|
|
569
|
-
class="
|
|
556
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center no-underline"
|
|
570
557
|
>
|
|
571
558
|
Workspace
|
|
572
559
|
</a>
|
|
573
560
|
|
|
574
|
-
<!--
|
|
561
|
+
<!-- AI Agents -->
|
|
575
562
|
<button
|
|
576
|
-
id="
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
class="
|
|
563
|
+
id="ai-agents-btn"
|
|
564
|
+
type="button"
|
|
565
|
+
data-i18n="nav.ai_agents"
|
|
566
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center"
|
|
580
567
|
>
|
|
581
|
-
|
|
568
|
+
Agents IA
|
|
582
569
|
</button>
|
|
583
570
|
|
|
584
571
|
<!-- Word Cloud -->
|
|
585
572
|
<button
|
|
586
573
|
onclick="openWordCloud()"
|
|
587
574
|
data-i18n="nav.word_cloud"
|
|
588
|
-
class="
|
|
575
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center"
|
|
589
576
|
>
|
|
590
577
|
☁ Word Cloud
|
|
591
578
|
</button>
|
|
@@ -594,7 +581,7 @@
|
|
|
594
581
|
<a
|
|
595
582
|
href="/diagram"
|
|
596
583
|
data-i18n="nav.diagram"
|
|
597
|
-
class="
|
|
584
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center no-underline"
|
|
598
585
|
>
|
|
599
586
|
◇ Diagram
|
|
600
587
|
</a>
|
|
@@ -603,7 +590,7 @@
|
|
|
603
590
|
<a
|
|
604
591
|
href="/context"
|
|
605
592
|
data-i18n="nav.ai_context"
|
|
606
|
-
class="
|
|
593
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center no-underline"
|
|
607
594
|
>
|
|
608
595
|
AI Context
|
|
609
596
|
</a>
|
|
@@ -612,7 +599,7 @@
|
|
|
612
599
|
<button
|
|
613
600
|
onclick="openFilesModal()"
|
|
614
601
|
data-i18n="nav.files"
|
|
615
|
-
class="
|
|
602
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center"
|
|
616
603
|
>
|
|
617
604
|
📁 Files
|
|
618
605
|
</button>
|
|
@@ -621,10 +608,35 @@
|
|
|
621
608
|
<a
|
|
622
609
|
href="/admin"
|
|
623
610
|
data-i18n="nav.admin"
|
|
624
|
-
class="
|
|
611
|
+
class="h-[34px] px-3 rounded-[9px] border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 text-[13px] font-bold text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors inline-flex items-center no-underline"
|
|
625
612
|
>
|
|
626
613
|
⚙ Admin
|
|
627
614
|
</a>
|
|
615
|
+
|
|
616
|
+
<!-- Dark mode toggle -->
|
|
617
|
+
<button
|
|
618
|
+
id="dark-toggle"
|
|
619
|
+
data-i18n-title="nav.toggle_dark"
|
|
620
|
+
title="Toggle dark mode"
|
|
621
|
+
class="p-2 rounded-lg text-gray-500 dark:text-gray-400 hover:bg-gray-100 dark:hover:bg-gray-800 transition-colors"
|
|
622
|
+
>
|
|
623
|
+
<span id="dark-icon" class="text-lg leading-none">☾</span>
|
|
624
|
+
</button>
|
|
625
|
+
|
|
626
|
+
<!-- Search (desktop — mirrors sidebar search) -->
|
|
627
|
+
<div class="relative hidden sm:block">
|
|
628
|
+
<input
|
|
629
|
+
id="header-search"
|
|
630
|
+
type="search"
|
|
631
|
+
data-i18n-placeholder="nav.search_placeholder"
|
|
632
|
+
placeholder="Search docs…"
|
|
633
|
+
class="w-56 pl-8 pr-3 py-1.5 text-sm rounded-lg border border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 text-gray-900 dark:text-gray-100 placeholder:text-gray-400 focus:outline-none focus:ring-2 focus:ring-blue-500"
|
|
634
|
+
/>
|
|
635
|
+
<span
|
|
636
|
+
class="absolute left-2.5 top-2 text-gray-400 text-sm pointer-events-none"
|
|
637
|
+
>🔍</span
|
|
638
|
+
>
|
|
639
|
+
</div>
|
|
628
640
|
</div>
|
|
629
641
|
</header>
|
|
630
642
|
|
|
@@ -3110,6 +3122,117 @@
|
|
|
3110
3122
|
</div>
|
|
3111
3123
|
</div>
|
|
3112
3124
|
|
|
3125
|
+
<!-- ── AI agents launch modal ── -->
|
|
3126
|
+
<div
|
|
3127
|
+
id="ai-agents-modal"
|
|
3128
|
+
class="hidden fixed inset-0 z-[55] bg-black/45 flex items-center justify-center p-4"
|
|
3129
|
+
onclick="if(event.target===this)closeAiAgentsModal()"
|
|
3130
|
+
>
|
|
3131
|
+
<div
|
|
3132
|
+
class="w-full max-w-4xl max-h-[82vh] bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-xl shadow-2xl flex flex-col overflow-hidden"
|
|
3133
|
+
onclick="event.stopPropagation()"
|
|
3134
|
+
>
|
|
3135
|
+
<div class="px-5 py-4 border-b border-gray-200 dark:border-gray-800 flex items-start justify-between gap-4">
|
|
3136
|
+
<div>
|
|
3137
|
+
<h2 class="font-semibold text-base text-gray-900 dark:text-gray-100" data-i18n="agents.title">Agents IA</h2>
|
|
3138
|
+
<p class="text-xs text-gray-500 dark:text-gray-400 mt-1" data-i18n="agents.subtitle">
|
|
3139
|
+
Launch a configured workspace agent.
|
|
3140
|
+
</p>
|
|
3141
|
+
</div>
|
|
3142
|
+
<button
|
|
3143
|
+
type="button"
|
|
3144
|
+
onclick="closeAiAgentsModal()"
|
|
3145
|
+
data-i18n-title="common.close"
|
|
3146
|
+
class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 text-xl leading-none px-2"
|
|
3147
|
+
>
|
|
3148
|
+
×
|
|
3149
|
+
</button>
|
|
3150
|
+
</div>
|
|
3151
|
+
<div id="ai-agents-grid" class="p-5 overflow-y-auto grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-3">
|
|
3152
|
+
<p class="text-sm text-gray-400" data-i18n="common.loading">Loading…</p>
|
|
3153
|
+
</div>
|
|
3154
|
+
</div>
|
|
3155
|
+
</div>
|
|
3156
|
+
|
|
3157
|
+
<!-- ── AI agent input modal ── -->
|
|
3158
|
+
<div
|
|
3159
|
+
id="ai-agent-input-modal"
|
|
3160
|
+
class="hidden fixed inset-0 z-[56] bg-black/45 flex items-center justify-center p-4"
|
|
3161
|
+
onclick="if(event.target===this)closeAiAgentInputModal()"
|
|
3162
|
+
>
|
|
3163
|
+
<div
|
|
3164
|
+
class="w-full max-w-2xl bg-white dark:bg-gray-900 border border-gray-200 dark:border-gray-700 rounded-xl shadow-2xl flex flex-col overflow-hidden"
|
|
3165
|
+
onclick="event.stopPropagation()"
|
|
3166
|
+
>
|
|
3167
|
+
<div class="px-5 py-4 border-b border-gray-200 dark:border-gray-800 flex items-start justify-between gap-4">
|
|
3168
|
+
<div>
|
|
3169
|
+
<h2 id="ai-agent-input-title" class="font-semibold text-base text-gray-900 dark:text-gray-100" data-i18n="agents.input_title">Agent input</h2>
|
|
3170
|
+
<p id="ai-agent-input-hint" class="text-xs text-gray-500 dark:text-gray-400 mt-1" data-i18n="agents.input_hint">
|
|
3171
|
+
Provide the input required for this run.
|
|
3172
|
+
</p>
|
|
3173
|
+
</div>
|
|
3174
|
+
<button
|
|
3175
|
+
type="button"
|
|
3176
|
+
onclick="closeAiAgentInputModal()"
|
|
3177
|
+
data-i18n-title="common.close"
|
|
3178
|
+
class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 text-xl leading-none px-2"
|
|
3179
|
+
>
|
|
3180
|
+
×
|
|
3181
|
+
</button>
|
|
3182
|
+
</div>
|
|
3183
|
+
<div class="p-5 flex flex-col gap-4">
|
|
3184
|
+
<textarea
|
|
3185
|
+
id="ai-agent-user-input"
|
|
3186
|
+
rows="8"
|
|
3187
|
+
class="w-full rounded-lg border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-950 px-3 py-2 text-sm text-gray-900 dark:text-gray-100 focus:outline-none focus:ring-2 focus:ring-blue-500/25 focus:border-blue-500 resize-y"
|
|
3188
|
+
></textarea>
|
|
3189
|
+
<div class="flex justify-end gap-3">
|
|
3190
|
+
<button
|
|
3191
|
+
type="button"
|
|
3192
|
+
onclick="closeAiAgentInputModal()"
|
|
3193
|
+
data-i18n="common.cancel"
|
|
3194
|
+
class="text-sm px-4 py-2 rounded-lg border border-gray-200 dark:border-gray-700 text-gray-600 dark:text-gray-400 hover:bg-gray-50 dark:hover:bg-gray-800 transition-colors"
|
|
3195
|
+
>Cancel</button>
|
|
3196
|
+
<button
|
|
3197
|
+
id="ai-agent-input-run"
|
|
3198
|
+
type="button"
|
|
3199
|
+
data-i18n="agents.run"
|
|
3200
|
+
class="text-sm px-4 py-2 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"
|
|
3201
|
+
>Run agent</button>
|
|
3202
|
+
</div>
|
|
3203
|
+
</div>
|
|
3204
|
+
</div>
|
|
3205
|
+
</div>
|
|
3206
|
+
|
|
3207
|
+
<!-- ── AI agent persistent toast ── -->
|
|
3208
|
+
<div
|
|
3209
|
+
id="ai-agent-toast"
|
|
3210
|
+
class="hidden fixed right-5 bottom-5 z-[70] w-[min(420px,calc(100vw-2.5rem))] rounded-xl border border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900 shadow-2xl px-4 py-3"
|
|
3211
|
+
role="status"
|
|
3212
|
+
>
|
|
3213
|
+
<div class="flex items-start gap-3">
|
|
3214
|
+
<span id="ai-agent-toast-icon" class="mt-0.5 h-5 w-5 rounded-full border-2 border-blue-500 border-t-transparent animate-spin shrink-0"></span>
|
|
3215
|
+
<div class="min-w-0 flex-1">
|
|
3216
|
+
<p id="ai-agent-toast-title" class="text-sm font-semibold text-gray-900 dark:text-gray-100" data-i18n="agents.loading">Running agent…</p>
|
|
3217
|
+
<p id="ai-agent-toast-message" class="text-xs text-gray-500 dark:text-gray-400 mt-1 break-words"></p>
|
|
3218
|
+
<button
|
|
3219
|
+
id="ai-agent-toast-open"
|
|
3220
|
+
type="button"
|
|
3221
|
+
data-i18n="agents.open_document"
|
|
3222
|
+
class="hidden mt-3 text-xs px-3 py-1.5 rounded-lg bg-blue-600 hover:bg-blue-700 text-white font-semibold transition-colors"
|
|
3223
|
+
>Open document</button>
|
|
3224
|
+
</div>
|
|
3225
|
+
<button
|
|
3226
|
+
id="ai-agent-toast-close"
|
|
3227
|
+
type="button"
|
|
3228
|
+
data-i18n-title="common.close"
|
|
3229
|
+
class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-200 text-lg leading-none px-1 shrink-0"
|
|
3230
|
+
>
|
|
3231
|
+
×
|
|
3232
|
+
</button>
|
|
3233
|
+
</div>
|
|
3234
|
+
</div>
|
|
3235
|
+
|
|
3113
3236
|
<!-- ── Generic confirmation modal (used by showConfirm) ── -->
|
|
3114
3237
|
<div
|
|
3115
3238
|
id="confirm-modal"
|