pretheme
This commit is contained in:
+95
-17
@@ -13,7 +13,15 @@
|
||||
href="https://fonts.googleapis.com/css2?family=Geist+Mono:wght@400;500;600&family=Inter:wght@400;500;600;700;800&display=swap"
|
||||
rel="stylesheet"
|
||||
/>
|
||||
<link rel="stylesheet" href="style.css?v=20260902001" />
|
||||
<link rel="stylesheet" href="style.css?v=202609041120" />
|
||||
<script>
|
||||
document.addEventListener("DOMContentLoaded", () => {
|
||||
const l = document.querySelector('link[rel="stylesheet"]');
|
||||
if (l && !l.href.includes("v=202609041120")) {
|
||||
l.href = l.href.replace(/v=\d+/, "v=202609041120");
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</head>
|
||||
<!--
|
||||
`booting` disables transitions/animations until the first paint commits.
|
||||
@@ -22,17 +30,32 @@
|
||||
bootstrap script at the end of main.js strips the class after one rAF.
|
||||
-->
|
||||
<body class="booting">
|
||||
<div id="talk-unlocker" class="talk-unlocker" hidden data-debug-only-never>
|
||||
<div class="talk-unlocker-hint">
|
||||
<div class="talk-unlocker-spinner" aria-hidden="true"></div>
|
||||
<p class="talk-unlocker-title">Preparando Vocero…</p>
|
||||
<p class="talk-unlocker-sub">Toca en cualquier lugar para empezar a hablar</p>
|
||||
</div>
|
||||
</div>
|
||||
<div id="app">
|
||||
<header class="topbar">
|
||||
<div class="brand">
|
||||
<div class="ident">
|
||||
<div class="ident-head">
|
||||
<a class="ident-title">Azurian Vocero realtime ver.Beta 2.0</a>
|
||||
<a class="ident-title">Vocero</a>
|
||||
</div>
|
||||
<div id="ident-user-name" class="ident-user-name" hidden></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="topbar-right">
|
||||
<!-- Left sidebar (reports) toggle: always visible, pinned left side of the
|
||||
topbar control cluster. Clicking slides in the offcanvas sidebar on
|
||||
mobile; it's a no-op hover hint on desktop where sidebar is always
|
||||
shown. -->
|
||||
<button id="reports-sidebar-toggle" class="icon-btn" title="Reports programados" aria-label="Abrir panel de reportes" aria-expanded="false" aria-controls="reports-sidebar" hidden data-reports-sidebar-toggle data-debug-only="true">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M3 3h18v18H3z" fill="none"/><line x1="9" y1="3" x2="9" y2="21"/></svg>
|
||||
<span id="reports-sidebar-badge" class="chat-badge" aria-hidden="true"></span>
|
||||
</button>
|
||||
<div class="topbar-right" hidden data-debug-only="true">
|
||||
<!-- HF login chip / sign-in pill. Populated by ui/account.js; only
|
||||
shown when the deploy runs behind a load balancer with OAuth. -->
|
||||
<div id="account" class="account" hidden></div>
|
||||
@@ -45,10 +68,6 @@
|
||||
<button id="rag-btn" class="icon-btn" title="Custom RAG context" aria-label="Custom RAG context">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M4 19.5A2.5 2.5 0 0 1 6.5 17H20"/><path d="M6.5 2H20v20H6.5A2.5 2.5 0 0 1 4 19.5v-15A2.5 2.5 0 0 1 6.5 2z"/></svg>
|
||||
</button>
|
||||
<button id="chat-btn" class="icon-btn" title="Conversation history" aria-label="Conversation history">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"/></svg>
|
||||
<span id="chat-badge" class="chat-badge" aria-hidden="true"></span>
|
||||
</button>
|
||||
<button id="settings-btn" class="icon-btn" title="Settings" aria-label="Settings">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="3"/><path d="M19.4 15a1.65 1.65 0 0 0 .33 1.82l.06.06a2 2 0 1 1-2.83 2.83l-.06-.06a1.65 1.65 0 0 0-1.82-.33 1.65 1.65 0 0 0-1 1.51V21a2 2 0 1 1-4 0v-.09A1.65 1.65 0 0 0 9 19.4a1.65 1.65 0 0 0-1.82.33l-.06.06a2 2 0 1 1-2.83-2.83l.06-.06a1.65 1.65 0 0 0 .33-1.82 1.65 1.65 0 0 0-1.51-1H3a2 2 0 1 1 0-4h.09A1.65 1.65 0 0 0 4.6 9a1.65 1.65 0 0 0-.33-1.82l-.06-.06a2 2 0 1 1 2.83-2.83l.06.06a1.65 1.65 0 0 0 1.82.33H9a1.65 1.65 0 0 0 1-1.51V3a2 2 0 1 1 4 0v.09a1.65 1.65 0 0 0 1 1.51 1.65 1.65 0 0 0 1.82-.33l.06-.06a2 2 0 1 1 2.83 2.83l-.06.06a1.65 1.65 0 0 0-.33 1.82V9c0 .66.39 1.25 1 1.51H21a2 2 0 1 1 0 4h-.09a1.65 1.65 0 0 0-1.51 1z"/></svg>
|
||||
</button>
|
||||
@@ -128,6 +147,31 @@
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Chat di testo SEMPRE VISIBILE (fissa in basso, tra stage e footer).
|
||||
Nota: ora è un blocco diretto del flex-col #app, non più un overlay
|
||||
destro → non c'è più bisogno del bottone toggle in topbar. -->
|
||||
<section id="chat-panel" class="chat-panel chat-panel-inline" aria-label="Chat de texto">
|
||||
<div class="chat-panel-inner">
|
||||
<header class="chat-panel-header">
|
||||
<h3>Conversación</h3>
|
||||
</header>
|
||||
<div id="chat-history" class="chat-history" role="log" aria-live="polite" aria-atomic="false"></div>
|
||||
<!-- Text input row HIDDEN per user request 2026-09-04 (restore removing hidden tag below) -->
|
||||
<form id="chat-form" class="chat-form" autocomplete="off" spellcheck="false" hidden style="display:none!important">
|
||||
<input id="chat-input"
|
||||
class="chat-input"
|
||||
type="text"
|
||||
name="message"
|
||||
placeholder="Escribe aquí tu mensaje a Vocero…"
|
||||
aria-label="Enviar mensaje de texto a Vocero"
|
||||
maxlength="500"
|
||||
/>
|
||||
<button id="chat-send" type="submit" class="chat-send-btn icon-btn" aria-label="Enviar mensaje">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="22" y1="2" x2="11" y2="13"/><polygon points="22 2 15 22 11 13 2 9 22 2"/></svg>
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
<!-- Ephemeral chat bubbles anchored to the top-right -->
|
||||
@@ -141,19 +185,26 @@
|
||||
<span class="cam-label">camera</span>
|
||||
</div>
|
||||
|
||||
<!-- Conversation history panel (overlay) -->
|
||||
<div id="chat-panel" class="chat-panel">
|
||||
<div id="chat-panel-backdrop" class="chat-panel-backdrop"></div>
|
||||
<div class="chat-panel-inner">
|
||||
<header class="chat-panel-header">
|
||||
<h3>Conversation</h3>
|
||||
<button id="chat-panel-close" class="icon-btn" aria-label="Close">
|
||||
<!-- Left sidebar: reports programados.
|
||||
Desktop: fixed left, 320px, always visible (below topbar + above sticky footer).
|
||||
Mobile : off-canvas left overlay, toggled by #reports-sidebar-toggle button in topbar. -->
|
||||
<aside id="reports-sidebar" class="reports-sidebar" aria-label="Reportes programados" hidden>
|
||||
<div id="reports-sidebar-backdrop" class="reports-sidebar-backdrop" data-close-reports-sidebar></div>
|
||||
<div class="reports-sidebar-inner">
|
||||
<header class="reports-sidebar-header">
|
||||
<h3>Reportes</h3>
|
||||
<button id="reports-sidebar-close" class="icon-btn" aria-label="Cerrar panel de reportes" data-close-reports-sidebar>
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
|
||||
</button>
|
||||
</header>
|
||||
<div id="chat-history" class="chat-history"></div>
|
||||
<!-- MOVED from inside .ident in the topbar — same #id so main.js syncVoceroHeaderUser()
|
||||
continues to work with zero JS changes to reports rendering logic. -->
|
||||
<div id="reports-hint" class="reports-hint" hidden></div>
|
||||
<!-- Debug-only: Spanish suggestions panel (gated behind ?debug=true).
|
||||
Shown as the bottom block inside the left sidebar. -->
|
||||
<div id="reports-suggestions" class="reports-suggestions" hidden data-debug-only="true"></div>
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<dialog id="about-modal" class="modal about-modal">
|
||||
<div class="modal-content">
|
||||
@@ -395,6 +446,33 @@
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<script type="module" src="main.js?v=20260902001"></script>
|
||||
<!-- User profile dialog — opened by clicking the circular avatar badge in
|
||||
the brand header. Styling: large glass hero with initials + rows of
|
||||
user metadata populated via main.js populateUserProfileDialog(). -->
|
||||
<dialog id="user-profile-dialog" class="modal user-profile-modal" aria-labelledby="user-profile-title">
|
||||
<div class="modal-content user-profile-card">
|
||||
<button id="user-profile-close" class="icon-btn user-profile-close" aria-label="Close user profile">
|
||||
<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/></svg>
|
||||
</button>
|
||||
|
||||
<!-- Hero: big glass avatar circle + title + subtitle (email fallback). -->
|
||||
<section class="user-profile-hero">
|
||||
<div id="user-profile-avatar" class="user-profile-avatar" aria-hidden="true">AV</div>
|
||||
<h2 id="user-profile-title" class="user-profile-title"></h2>
|
||||
<p id="user-profile-subtitle" class="user-profile-subtitle"></p>
|
||||
</section>
|
||||
|
||||
<!-- Metadata: a 1-col definition-list-like grid. Empty rows are hidden
|
||||
automatically via JS when the field has no value, so we never show
|
||||
blank labels. -->
|
||||
<section id="user-profile-metadata" class="user-profile-metadata" aria-label="Informazioni utente"></section>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
<footer class="app-footer" aria-label="App version footer">
|
||||
<span class="app-footer-text">Azurian Vocero realtime ver.Beta 2.1</span>
|
||||
</footer>
|
||||
|
||||
<script type="module" src="main.js?v=202609041120"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user