From 7062a357faf1084d13bfbc583bf6b6c4feae95cb Mon Sep 17 00:00:00 2001
From: a-eloCard <esrsc23@inf.ufpr.br>
Date: Fri, 25 Apr 2025 09:27:25 -0300
Subject: [PATCH] Issue #235: ADD Co-authors of a resource

---
 src/app/components/SideBar.js                 |  2 +-
 .../publicar/components/AuthorSelection.js    | 16 ++++++++++++--
 src/app/recurso/[id]/components/authors.js    |  8 +++++++
 .../recurso/[id]/components/createComments.js |  4 ++--
 .../recurso/[id]/components/editComments.js   |  2 +-
 src/app/recurso/[id]/components/metrics.js    |  4 ++++
 .../recurso/[id]/components/resourceInfo.js   | 22 ++++++++++++++++++-
 7 files changed, 51 insertions(+), 7 deletions(-)
 create mode 100644 src/app/recurso/[id]/components/authors.js

diff --git a/src/app/components/SideBar.js b/src/app/components/SideBar.js
index cab36c52..31b546ef 100644
--- a/src/app/components/SideBar.js
+++ b/src/app/components/SideBar.js
@@ -167,7 +167,7 @@ export default function SideBar({ setFilterState, filterState }) {
                 key={index}
                 alt={item.title}
                 title={item.title}
-                className={`aspect-square cursor-pointer hover:bg-lightGray-HC-white hover:text-darkGray-HC-dark-underline focus:bg-lightGray-HC-white text-center rounded-lg pt-2 w-[60%] h-[70px]
+                className={`aspect-square cursor-pointer hover:bg-lightGray-HC-white hover:text-darkGray-HC-dark-underline focus:bg-lightGray-HC-white text-center rounded-lg items-center justify-center pt-2 w-[53%] h-[53%]
                   ${(page === item.href) || (pathname.startsWith(item.href)) ? "bg-lightGray-HC-white text-darkGray-HC-dark-underline font-bold" : ""}
                 `}
               >
diff --git a/src/app/publicar/components/AuthorSelection.js b/src/app/publicar/components/AuthorSelection.js
index aa415da6..155aade6 100644
--- a/src/app/publicar/components/AuthorSelection.js
+++ b/src/app/publicar/components/AuthorSelection.js
@@ -54,6 +54,11 @@ export default function AuthorSelection({ selectedValue, handleRadioChange, auth
             }
           />
         </RadioGroup>
+        {selectedValue !== "a" && (
+          <div className="text-sm text-darkGray-HC-white mb-1">
+            Nomes dos autores devem ser separados por vírgula.
+          </div>
+        )}
         <CustomTextField
           fullWidth
           multiline
@@ -62,9 +67,16 @@ export default function AuthorSelection({ selectedValue, handleRadioChange, auth
           value={author}
           onChange={handleAuthorChange}
           helperText={<div className=" w-full justify-end flex">
-            {author?.length}/255
+             <span className="text-red-HC-white justify-start">
+              {selectedValue === "b" && !author.includes(",") && "Separe os nomes com vírgula."}
+              {(selectedValue === "b" || selectedValue === "c") && author.trim().endsWith(",") && "Não termine com vírgula."}
+            </span>
+            <span className="ml-auto">
+              {author?.length}/255
+            </span>
             </div>}
-          error={author?.length > 255}
+          error={(selectedValue === "b" && (!author.includes(",") || author.trim().endsWith(","))) || 
+                author?.length > 255 || selectedValue === "c" && author.trim().endsWith(",")}
           className="mb-5"
         />
       </div>
diff --git a/src/app/recurso/[id]/components/authors.js b/src/app/recurso/[id]/components/authors.js
new file mode 100644
index 00000000..dd0d3b47
--- /dev/null
+++ b/src/app/recurso/[id]/components/authors.js
@@ -0,0 +1,8 @@
+export default function Authors({ data }) {
+    return (
+      <div className="flex flex-col p-1 text-darkGray-HC-white">
+        <div className="font-bold text-lg">Autores deste Recurso</div>
+        <div className="text-darkGray-HC-white p-3">{data}</div>
+      </div>
+    );
+  }
\ No newline at end of file
diff --git a/src/app/recurso/[id]/components/createComments.js b/src/app/recurso/[id]/components/createComments.js
index ac216038..8987e41f 100644
--- a/src/app/recurso/[id]/components/createComments.js
+++ b/src/app/recurso/[id]/components/createComments.js
@@ -67,11 +67,11 @@ export default function CreateComments({ user, logged, handleSubmitComment, newC
             value={newComment}
           />
           <div className="flex justify-end gap-2 mt-2">
-            <button className="w-24 h-8 border-black rounded-lg text-darkGray-HC-white-underline text-sm hover:text-white-HC-dark-underline hover:bg-ice-HC-white outline outline-1 outline-ice-HC-white" onClick={() => setNewComment("")}> cancelar </button>
+            <button className="w-24 h-8 border-black rounded-lg text-darkGray-HC-white-underline text-sm hover:text-darkGray-HC-dark-underline hover:bg-lightGray-HC-white outline outline-1 outline-white" onClick={() => setNewComment("")}> Cancelar </button>
             <button className="bg-turquoise-HC-white hover:bg-darkTurquoise-HC-dark hover:text-white w-24 h-8 rounded-lg text-white-HC-dark-underline text-sm hover:bg-turquoise-hover outline outline-1 outline-ice-HC-white" onClick={() => {
               if (!logged) setNeedLoginOpen(true)
               handleSubmitComment()
-            }}> comentar </button>
+            }}> Comentar </button>
           </div>
         </div>
         <div className="flex flex-row justify-center items-baseline gap-3 sm:hidden">
diff --git a/src/app/recurso/[id]/components/editComments.js b/src/app/recurso/[id]/components/editComments.js
index b3eb87ac..132acff8 100644
--- a/src/app/recurso/[id]/components/editComments.js
+++ b/src/app/recurso/[id]/components/editComments.js
@@ -61,7 +61,7 @@ return (
                         value={editMessage}
                     />
                     <div className="flex justify-end gap-2 mt-2">
-                        <button className="w-24 h-8 rounded-lg text-darkGray-HC-white text-sm hover:bg-ice-HC-dark" onClick={() => { setEdit(false); setEditMessage(comment?.description) }}> cancelar </button>
+                        <button className="w-24 h-8 rounded-lg text-darkGray-HC-white text-sm hover:bg-lightGray-HC-dark" onClick={() => { setEdit(false); setEditMessage(comment?.description) }}> cancelar </button>
                         <button className="bg-turquoise-HC-white w-24 h-8 rounded-lg text-white-HC-dark-underline hover:text-white text-sm hover:bg-darkTurquoise-HC-dark  outline outline-1 outline-ice-HC-white" onClick={handleSubmitEdit}> editar </button>
                     </div>
                 </div>
diff --git a/src/app/recurso/[id]/components/metrics.js b/src/app/recurso/[id]/components/metrics.js
index 2a6274e6..5f97d2e4 100644
--- a/src/app/recurso/[id]/components/metrics.js
+++ b/src/app/recurso/[id]/components/metrics.js
@@ -25,6 +25,10 @@ const genMetric = ({ icon, name, data }) => {
 }
 
 export default function Specifications({ learningObject }) {
+  console.log(learningObject)
+  console.log(learningObject.author)
+  console.log(learningObject.publisher?.name)
+  console.log(learningObject.author)
   const metricInfo = [
     { icon: <IconViews className="text-2xl invertLogo-HC-white" />, name: "Visualizações", data: learningObject.views_count },
     { icon: <FavoriteOutlinedIcon />, name: "Curtidas", data: learningObject.likes_count },
diff --git a/src/app/recurso/[id]/components/resourceInfo.js b/src/app/recurso/[id]/components/resourceInfo.js
index 1d285b8f..5b0de8d4 100644
--- a/src/app/recurso/[id]/components/resourceInfo.js
+++ b/src/app/recurso/[id]/components/resourceInfo.js
@@ -1,6 +1,8 @@
 import { Tabs, Tab, Paper, Divider, Box } from "@mui/material";
+import AuthorsIcon from '@mui/icons-material/Groups2Rounded';
 import { useState, useLayoutEffect, createRef } from "react";
 import Specifications from "./specifications";
+import Authors from "./authors"
 import ExpandMoreIcon from "@mui/icons-material/ExpandMore";
 import ExpandLessIcon from "@mui/icons-material/ExpandLess";
 import Description from "./description";
@@ -45,13 +47,14 @@ export default function ResourceInfo({ learningObject }) {
     description: <Description data={learningObject.description} />,
     specifications: <Specifications learningObject={learningObject} />,
     metrics: <Metrics learningObject={learningObject} />,
+    authors: <Authors data={learningObject.author}/>
   };
 
   return (
     <>
       <Paper className="bg-white-HC-dark  outline outline-1 outline-ice-HC-white shadow-none flex flex-col flex-shrink-0 rounded-xl m-1 normal-case">
         <Tabs
-          className=""
+          className="max-sm:no-scrollbar max-sm:overflow-x-auto max-sm:animate-scrollHint"
           value={value}
           variant="fullWidth"
           onChange={handleChange}
@@ -102,6 +105,23 @@ export default function ResourceInfo({ learningObject }) {
             value="metrics" 
             label="Métricas"
             />
+          <Tab 
+            sx={{
+              display: { xs: "flex", sm: "none" }, // Show on small screens, hide on larger
+              justifyContent: "center",
+              borderBottom: value === "authors" ? "2px solid var(--turquoise-HC-white)" : "none",
+            }}
+            value="authors" 
+            label={<AuthorsIcon className="text-darkGray-HC-white"/>}
+          />
+          <Tab
+            sx={{
+              display: { xs: "none", sm: "flex" }, // Hide on small screens, show on larger
+            }} 
+            className="text-xl normal-case hover:bg-ice-HC-dark rounded-lg text-darkGray-HC-white-underline focus:text-turquoise-HC-white-underline" 
+            value="authors" 
+            label="Autores" 
+          />
         </Tabs>
         <hr style={{ borderTop: "1px solid var(--lightGray-HC-white)" }} />
         {viewMore ? (
-- 
GitLab