Bläddra i källkod

ajustes frontend pagina inicial

leonardo 3 månader sedan
förälder
incheckning
70d2fafe97

+ 2 - 2
dist/index.html

@@ -6,8 +6,8 @@
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
     <link rel="icon" type="image/x-icon" href="/favicon.ico?v=2" />
     <title>ORACULO</title>
-    <script type="module" crossorigin src="/assets/index-DJWTF99T.js"></script>
-    <link rel="stylesheet" crossorigin href="/assets/index-DBhEvp2j.css">
+    <script type="module" crossorigin src="/assets/index-Bgqg0aRD.js"></script>
+    <link rel="stylesheet" crossorigin href="/assets/index-CYiuIo4I.css">
   </head>
   <body class="bg-background">
     <noscript>

+ 1 - 1
index.html

@@ -5,7 +5,7 @@
     <meta http-equiv="X-UA-Compatible" content="IE=edge" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
     <link rel="icon" type="image/x-icon" href="/favicon.ico?v=2" />
-    <title>ORACULO</title>
+    <title>ORÁCULO</title>
   </head>
   <body class="bg-background">
     <noscript>

+ 9 - 2
src/components/ChatWindow.vue

@@ -2,7 +2,7 @@
   <div class="flex h-full min-h-[520px] w-full flex-col gap-4">
     <div
       ref="chatEl"
-      class="flex-1 overflow-auto rounded-2xl border border-border bg-black/10 p-4 dark:bg-black/20"
+      class="min-h-0 flex-1 overflow-auto rounded-2xl border border-border bg-black/10 p-4 dark:bg-black/20"
     >
       <div v-if="!messages.length" class="grid h-full place-items-center">
         <div class="text-center">
@@ -28,7 +28,14 @@
     </div>
 
     <div class="grid gap-3 md:grid-cols-[1fr_140px] md:items-start">
-      <textarea v-model="draft" rows="2" placeholder="Digite sua pergunta..." @keydown.enter.exact.prevent="onSend" />
+      <textarea
+        v-model="draft"
+        rows="2"
+        placeholder="Digite sua pergunta..."
+        class="resize-none"
+        style="resize: none"
+        @keydown.enter.exact.prevent="onSend"
+      />
       <button :disabled="loading || !draft.trim()" @click="onSend">Enviar</button>
     </div>
 

+ 88 - 13
src/layout/LayoutSistema.vue

@@ -79,13 +79,25 @@ onMounted(async () => {
 
 <template>
   <div class="app">
-    <div class="appShell">
-      <aside class="sidebar">
-        <div class="sidebarHeader">
+    <div class="appShell layoutShell">
+      <div class="layoutOverlay" aria-hidden="true" />
+
+      <header class="layoutHeader">
+        <div class="layoutHeaderLeft">
           <div class="brandTitle">ORÁCULO</div>
           <div class="brandSub">Assistente interno com base de conhecimento</div>
         </div>
 
+        <div class="layoutHeaderRight">
+          <div class="min-w-0">
+            <div class="text-base font-medium truncate ">{{ tituloPagina }}</div>
+          </div>
+          <BotaoAlterarTema />
+        </div>
+      </header>
+
+      <aside class="sidebar layoutSidebar">
+
         <div class="sidebarScroll">
           <div class="panel sidebarNav">
             <button
@@ -145,16 +157,7 @@ onMounted(async () => {
         </div>
       </aside>
 
-      <main class="main !flex !flex-col !p-0 !overflow-hidden">
-        <header
-          class="sticky top-0 z-30 h-16 flex items-center justify-between gap-4 px-4 md:px-6 bg-primary text-primary-foreground border-b border-border backdrop-blur-sm"
-        >
-          <div class="min-w-0">
-            <div class="text-base font-medium truncate">{{ tituloPagina }}</div>
-          </div>
-          <BotaoAlterarTema />
-        </header>
-
+      <main class="main layoutMain !flex !flex-col !p-0 !overflow-hidden">
         <div class="flex-1 overflow-auto p-4 md:p-6">
           <slot />
         </div>
@@ -164,6 +167,78 @@ onMounted(async () => {
 </template>
 
 <style scoped>
+.layoutShell {
+  --layout-header-height: 5rem;
+  position: relative;
+  grid-template-rows: var(--layout-header-height) 1fr;
+}
+
+.layoutOverlay {
+  position: absolute;
+  inset: 0;
+  pointer-events: none;
+  z-index: 0;
+  background: radial-gradient(900px 520px at 20% 10%, rgba(37, 99, 235, 0.12), transparent 60%),
+    radial-gradient(700px 520px at 85% 35%, rgba(162, 102, 255, 0.1), transparent 60%);
+}
+
+:global(html.dark) .layoutOverlay {
+  background: radial-gradient(900px 520px at 20% 10%, rgba(91, 140, 255, 0.18), transparent 60%),
+    radial-gradient(700px 520px at 85% 35%, rgba(162, 102, 255, 0.14), transparent 60%);
+}
+
+.layoutHeader {
+  grid-column: 1 / -1;
+  grid-row: 1;
+  position: relative;
+  z-index: 10;
+  display: grid;
+  grid-template-columns: 340px 1fr;
+  align-items: center;
+  gap: 18px;
+  padding: 14px 18px;
+  background: var(--primary);
+  color: var(--primary-foreground);
+  border-bottom: 1px solid var(--border);
+}
+
+.layoutHeaderLeft {
+  min-width: 0;
+}
+
+.layoutHeaderRight {
+  min-width: 0;
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  gap: 14px;
+}
+
+.layoutSidebar {
+  grid-column: 1;
+  grid-row: 2;
+  position: relative;
+  z-index: 10;
+  grid-template-rows: 1fr auto;
+}
+
+.layoutMain {
+  grid-column: 2;
+  grid-row: 2;
+  position: relative;
+  z-index: 10;
+}
+
+@media (max-width: 980px) {
+  .layoutHeader {
+    display: flex;
+  }
+
+  .layoutHeaderRight {
+    flex: 1;
+  }
+}
+
 .sidebarNav {
   display: grid;
   align-content: end;

+ 6 - 5
src/views/pagina-inicial/PaginaInicialView.vue

@@ -24,7 +24,7 @@ async function onLandingSend() {
 
 <template>
   <LayoutSistema>
-    <div v-if="isLanding" class="min-h-[calc(100vh-4rem)] flex items-end justify-center pb-12 md:pb-16">
+    <div v-if="isLanding" class="min-h-[calc(100vh-var(--layout-header-height))] flex items-end justify-center pb-12 md:pb-16">
       <div class="w-full max-w-[760px]">
         <div class="text-3xl font-extrabold tracking-tight">Como posso ajudar?</div>
         <div class="mt-2 text-sm text-muted-foreground">
@@ -36,7 +36,8 @@ async function onLandingSend() {
             v-model="landingDraft"
             rows="2"
             placeholder="Digite sua pergunta..."
-            class="min-h-24"
+            class="min-h-24 resize-none"
+            style="resize: none"
             @keydown.enter.exact.prevent="onLandingSend"
           />
         </div>
@@ -45,10 +46,10 @@ async function onLandingSend() {
       </div>
     </div>
 
-    <div v-else class="relative min-h-full w-full">
+    <div v-else class="relative h-full w-full">
       <div class="absolute inset-0 rounded-2xl bg-black/20 dark:bg-black/35" />
-      <div class="relative h-full w-full p-4 md:p-6">
-        <ChatWindow :messages="chatMessages" :loading="chatLoading" :error="chatError" @send="sendMessage" />
+      <div class="relative flex h-full w-full flex-col p-4 md:p-6">
+        <ChatWindow class="flex-1 min-h-0" :messages="chatMessages" :loading="chatLoading" :error="chatError" @send="sendMessage" />
       </div>
     </div>
   </LayoutSistema>