diff --git a/package-lock.json b/package-lock.json index 2e007d4980391f987263f34a932031a3279756b1..b3c50b267ff195e4a22d0d244640d7e2e81b4ae8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "frontend-mecred", - "version": "0.60.1", + "version": "0.61.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "frontend-mecred", - "version": "0.60.1", + "version": "0.61.0", "dependencies": { "@emotion/react": "^11.11.4", "@emotion/styled": "^11.11.5", diff --git a/package.json b/package.json index ebd2eb9e1cad4d95395941c7d2511d58c2b580b4..91c713751971f3aa5829ac451efe5d2246dfa36f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "frontend-mecred", - "version": "0.60.1", + "version": "0.61.0", "private": true, "scripts": { "dev": "npx next dev", diff --git a/src/app/components/Cards.js b/src/app/components/Cards.js index fefe3a577794b5261ae354019519cc6dd8d81e57..580f786c9b12ca998337b7f12ae9ceb82fe9d394 100644 --- a/src/app/components/Cards.js +++ b/src/app/components/Cards.js @@ -114,8 +114,9 @@ export default function Cards(props) { props["image"] === null ? getDefaultThumbnail(props["type"]) : `https://api.portalmec.c3sl.ufpr.br${props["image"]}` - } - alt="img" + } + alt="imagem" + title={props.title} /> <CardHeader @@ -135,7 +136,9 @@ export default function Cards(props) { /> } title={ - <Typography variant="body2" className="line-clamp-2 text-main-text font-bold"> + <Typography variant="body2" color="" className="line-clamp-2 text-main-text font-bold" + title={props["title"]} + > {props["title"]} </Typography> } diff --git a/src/app/components/GroupCardsCollections.js b/src/app/components/GroupCardsCollections.js index a8a588ef1f84e2b5ecd45805777336f361906285..cebcda7d4cf9d9841f56c77ab3aaa6e4f37b36c3 100644 --- a/src/app/components/GroupCardsCollections.js +++ b/src/app/components/GroupCardsCollections.js @@ -2,6 +2,7 @@ import { useEffect, useState } from "react"; import Cards from "./Cards"; import { Button } from "@mui/material"; +import { Tooltip } from "@mui/material"; /** * Retorna na tela uma coleção @@ -40,7 +41,6 @@ export default function GroupCardsCollections({ data, cardsPerRow }) { avatar={item["collectionable"]["publisher"]["avatar"]} image={item["collectionable"]["thumbnail"]} updated_at={item["collectionable"]["updated_at"]} - /> ); }) @@ -63,8 +63,9 @@ export default function GroupCardsCollections({ data, cardsPerRow }) { className="mb-2 border-hidden hover:bg-transparent rounded-xl normal-case flex " onClick={toggleContent} > - <p className="hover:bg-main px-4 text-main-text-click text-lg rounded-md"> - + <p className="hover:bg-main px-4 text-main-text-click text-lg rounded-md" + alt={expanded ? "Ver menos..." : "Ver mais..."} + > {expanded ? "Ver menos..." : "Ver mais..."} </p> </Button> diff --git a/src/app/components/Header.js b/src/app/components/Header.js index 377b9cc3e1ee3fe595142406ab901a542dbab7b8..82e4e5d81575270abf6e116410e703b8ed558015 100644 --- a/src/app/components/Header.js +++ b/src/app/components/Header.js @@ -81,6 +81,8 @@ function DefaultContent({ <div className="flex justify-end shrink-0 items-center pr-2"> <button type="button" + alt="Abrir busca" + title="Abrir busca" className="lg:hidden bg-secondary hover:bg-text-color w-10 h-10 rounded text-white shrink-0 transition" onClick={handleToggleMobileSearch} > @@ -105,6 +107,8 @@ function DefaultContent({ <> <button type="button" + alt="Notificações" + title="Notificações" className="bg-transparent hover:text-secondary w-10 h-10 rounded text-text-color flex-shrink-0 transition" > <NotificationsIcon className="h-full text-3xl" /> @@ -131,6 +135,8 @@ function MobileSearch({ setQuery, handleToggleMobileSearch }) { <SearchComponent setQuery={setQuery} /> <button type="button" + alt="Fechar busca" + title="Fechar busca" className="bg-text-color hover:bg-text-color w-10 h-10 rounded text-white shrink-0 transition" onClick={handleToggleMobileSearch} > diff --git a/src/app/components/MenuProfile.js b/src/app/components/MenuProfile.js index 1b17b0f2dd27fb529d090ada17d479ec3fef4789..7c8dad3c6e8ae596b9c1f4de50a9626539ba358c 100644 --- a/src/app/components/MenuProfile.js +++ b/src/app/components/MenuProfile.js @@ -109,6 +109,8 @@ export default function AccountMenu() { aria-controls={open ? "account-menu" : undefined} aria-haspopup="true" aria-expanded={open ? "true" : undefined} + title="Meu Perfil" + alt="Acessar meu perfil" > {userData["avatar_file_name"] === null ? ( <Avatar sx={{ width: 38, height: 38 }} className="mt-1"> diff --git a/src/app/components/SearchComponent.js b/src/app/components/SearchComponent.js index 0c3a0eebcaf2d90b8ad0d194f237d638f054a1d0..7912f7ef5eacd55a6aea7a49684cdb8772370308 100644 --- a/src/app/components/SearchComponent.js +++ b/src/app/components/SearchComponent.js @@ -147,18 +147,24 @@ export default function SearchComponent({ setQuery, sizeWindow }) { </div> <button type="submit" + alt="Buscar" + title="Buscar" className=" bg-secondary hover:bg-text-color w-10 h-10 rounded text-white flex-shrink-0 transition" > <SearchIcon className="h-full text-3xl" /> </button> <button type="button" + alt="Busca por voz" + title="Busca por voz" className=" bg-main-hover hover:bg-text-color w-10 h-10 rounded text-text-color hover:text-white flex-shrink-0 transition" > <KeyboardVoiceIcon className="h-full text-3xl" /> </button> <button - type="button" + type="button" + alt="Teclado virtual" + title="Teclado virtual" className=" bg-main-hover hover:bg-text-color w-10 h-10 rounded text-text-color hover:text-white flex-shrink-0 transition" > <KeyboardIcon className="h-full text-3xl" /> diff --git a/src/app/components/ShareModal.js b/src/app/components/ShareModal.js index af10d68928206935d3635991db843798d7e17010..69422d4ccdcc8c52a5028309841fdcba93764075 100644 --- a/src/app/components/ShareModal.js +++ b/src/app/components/ShareModal.js @@ -35,6 +35,7 @@ export default function ShareModal({ open, onClose }) { justifyContent: "start", }} href={`https://www.facebook.com/sharer.php?u=${url}`} + alt="Compartilhar no Facebook" > <Image className="w-6 h-6 self-start" @@ -57,6 +58,7 @@ export default function ShareModal({ open, onClose }) { justifyContent: "start", }} href={`https://twitter.com/intent/tweet?url=${url}`} + alt="Compartilhar no X" > <Image className="w-6 h-6 bg-black rounded-full p-[3px]" @@ -81,6 +83,7 @@ export default function ShareModal({ open, onClose }) { onClick={() => { navigator.clipboard.writeText(url); }} + alt="Copiar link para o clipboard" > <ContentCopyIcon className="p-[1px]" /> <span>Copiar link</span> diff --git a/src/app/entrar/components/LoginForm.js b/src/app/entrar/components/LoginForm.js index 4a0436a4ea688efd4d566051492442698b37a4f2..3b6e3f5126d613d1ae51275bc3765146cc84fc43 100644 --- a/src/app/entrar/components/LoginForm.js +++ b/src/app/entrar/components/LoginForm.js @@ -5,6 +5,7 @@ import { Paper, TextField, Alert, + Tooltip, } from "@mui/material"; import theme from "@/app/theme"; import { ThemeProvider } from "@emotion/react"; @@ -59,6 +60,7 @@ export default function LoginForm({ className="m-5" onChange={handleEmailChange} error={errorMessage.length > 0} + alt="E-mail" /> <TextField fullWidth @@ -67,12 +69,15 @@ export default function LoginForm({ className="mb-5" onChange={handlePasswordChange} error={errorMessage != errorMessage.length > 0} - /> + alt="Senha" + /> <Button fullWidth disableElevation className="bg-secondary text-white hover:bg-secondary-hover normal-case font-bold" type="submit" + alt="Entrar" + title="Entrar" > Entrar </Button> @@ -80,7 +85,9 @@ export default function LoginForm({ Esqueceu a senha?{" "} <a onClick={handleOpenModalPasswd} - className="text-secondary cursor-pointer hover:font-bold"> + className="text-secondary cursor-pointer hover:font-bold" + alt="Esqueceu a senha?" + > Clique aqui. </a> </p> @@ -89,6 +96,7 @@ export default function LoginForm({ <a onClick={handleOpenModalSignup} className="text-secondary hover:font-bold cursor-pointer" + alt="Cadastre-se" > Cadastre-se. </a> @@ -103,16 +111,22 @@ export default function LoginForm({ className="my-2 bg-white border-white text-main-text normal-case flex gap-2 w-96 font-bold hover:bg-main-hover" > <span>Entrar com o</span> - <Image className="w-14 h-6" src="/govbr.svg" alt="govbr logo" width={10} height={10} /> + <Image className="w-14 h-6" src="/govbr.svg" alt="govbr" width={10} height={10} /> </Button> - <button onClick={() => router.push("/sobre")} className="text-secondary lg:text-nowrap bg-white py-1 w-96 hover:bg-main-hover rounded cursor-pointer">Entrar sem cadastrar</button> + <button + onClick={() => router.push("/sobre")} + className="text-secondary lg:text-nowrap bg-white py-1 w-96 hover:bg-main-hover rounded cursor-pointer" + alt="Entrar sem cadastrar" + > + Entrar sem cadastrar + </button> <Button fullWidth disableElevation variant="outlined" className="mt-2 bg-white border-white text-main-text normal-case flex gap-2 w-96 hover:bg-main-hover" > - <Image className="w-6 h-6" src="/google.svg" alt="google logo" width={10} height={10} /> + <Image className="w-6 h-6" src="/google.svg" width={10} height={10} /> <span>Entrar com o Google</span> </Button> <SignupModal open={openModalSignup} handleClose={handleCloseModalSignup} /> diff --git a/src/app/entrar/components/PasswordModal.js b/src/app/entrar/components/PasswordModal.js index 16a67b90b87d4af749054348d6cddbecc17b3c1f..449c7565b0569402148786ded8156a0d75eaa1d9 100644 --- a/src/app/entrar/components/PasswordModal.js +++ b/src/app/entrar/components/PasswordModal.js @@ -77,12 +77,14 @@ export default function PasswordModal({ open, handleClose }) { className="mb-5" value={userEmail} error={!userEmail && error} + alt="E-mail (obrigatório)" /> <Button fullWidth disableElevation className="bg-secondary text-white hover:bg-secondary-hover" type="submit" + alt="Enviar" > Enviar </Button> diff --git a/src/app/entrar/components/SignupModal.js b/src/app/entrar/components/SignupModal.js index 6f5ad0b89fce142af81947335814edae503fa8b9..c655da6340448bf9a463592c20bc6a502b9dc186 100644 --- a/src/app/entrar/components/SignupModal.js +++ b/src/app/entrar/components/SignupModal.js @@ -80,6 +80,7 @@ export default function SignupModal({ open, handleClose }) { className="my-5" value={userName} error={!userName && error} + alt="Nome Completo (obrigatório)" /> <TextField fullWidth @@ -89,6 +90,7 @@ export default function SignupModal({ open, handleClose }) { className="mb-5" value={userEmail} error={!userEmail && error} + alt="E-mail (obrigatório)" /> <TextField fullWidth @@ -98,6 +100,7 @@ export default function SignupModal({ open, handleClose }) { className="mb-5" value={userPassword} error={!userPassword && error} + alt="Senha (obrigatório)" /> <TextField fullWidth @@ -115,12 +118,14 @@ export default function SignupModal({ open, handleClose }) { userPasswordConfirmation != userPassword && helperText } + alt="Confirmar senha (obrigatório)" /> <Button fullWidth disableElevation className="bg-secondary text-white hover:bg-secondary-hover" type="submit" + alt="Enviar" > Enviar </Button> @@ -132,6 +137,7 @@ export default function SignupModal({ open, handleClose }) { disableElevation variant="outlined" className="mt-2 border-main text-main-text normal-case flex gap-2" + alt="Cadastrar-se com o Google" > <Image height="0" diff --git a/src/app/novaSenha/page.js b/src/app/novaSenha/page.js index 30e95ebfadce9031eb006839a39d34981d10d814..931bb0a72df8267a22f6d179bd5a78659763f27e 100644 --- a/src/app/novaSenha/page.js +++ b/src/app/novaSenha/page.js @@ -112,6 +112,7 @@ export default function ResetPassword() { name="senha" onChange={(e) => setPassword(e.target.value)} value={password} + alt="Nova Senha" /> <TextField fullWidth @@ -121,12 +122,14 @@ export default function ResetPassword() { name="confirma-senha" onChange={(e) => setPasswordConfirmation(e.target.value)} value={passwordConfirmation} + alt="Confirme a Nova Senha" /> <Button fullWidth disableElevation className="bg-secondary text-white hover:bg-secondary-hover" type="submit" + alt="Trocar a senha" > Trocar a Senha </Button> diff --git a/src/app/perfil/[id]/components/AboutCard.js b/src/app/perfil/[id]/components/AboutCard.js index b7724d04c2cdea62a6e29ac1f2bac899f19f6dd5..a940e1bfadf826e095e3b533e72c21e552a1231b 100644 --- a/src/app/perfil/[id]/components/AboutCard.js +++ b/src/app/perfil/[id]/components/AboutCard.js @@ -35,7 +35,7 @@ const AboutCard = ({ title, content }) => { {showButton && ( <button onClick={toggleContent} - className="bg-white text-main-text px-4 py-2 rounded transition-colors hover:bg-gray-200 text-base font-medium " + className="bg-white text-main-text px-4 py-2 rounded transition-colors hover:bg-gray-200 text-base font-medium" > {expanded ? 'Ver menos' : 'Ver mais'} {expanded ? <KeyboardArrowUpIcon /> : <KeyboardArrowDownIcon />} diff --git a/src/app/perfil/[id]/components/CardsHomologation.js b/src/app/perfil/[id]/components/CardsHomologation.js index 65f9668e6d9435d2c8f472f5e18ae19ea91c0331..11026e6b8667ca9c19f5021aff1da4b221b85d19 100644 --- a/src/app/perfil/[id]/components/CardsHomologation.js +++ b/src/app/perfil/[id]/components/CardsHomologation.js @@ -74,7 +74,8 @@ export default function CardsHomologation({ item, key }) { item["learning_object"]["thumbnail"] === null ? getDefaultThumbnail(item["learning_object"]["object_type"]) : `https://api.portalmec.c3sl.ufpr.br${item["learning_object"]["thumbnail"]}` - } + } + title={item["learning_object"]["thumbnail"]} alt="img" /> <CardHeader @@ -84,6 +85,7 @@ export default function CardsHomologation({ item, key }) { <Avatar src={`https://api.portalmec.c3sl.ufpr.br/${item["submitter"]["avatar"]}`} alt={item["submitter"]["name"]} + title={item["submitter"]["name"]} // className="-mt-9" sx={{ width: 28, @@ -112,7 +114,9 @@ export default function CardsHomologation({ item, key }) { } /> <div className="flex items-end"> - <Button variant="outlined" className=" "> + <Button variant="outlined" className=" " + alt='Avaliar' + > Avaliar </Button> </div> diff --git a/src/app/perfil/[id]/components/CreateCollectionModal.js b/src/app/perfil/[id]/components/CreateCollectionModal.js index 309f58d97f741f74c4629f25ffd5b250e8ec26f7..debb292d83f716580dad744a29494117af280a08 100644 --- a/src/app/perfil/[id]/components/CreateCollectionModal.js +++ b/src/app/perfil/[id]/components/CreateCollectionModal.js @@ -88,12 +88,14 @@ export default function CreateCollectionModal({ open, onClose, idLogin }) { <button className=" border text-sm p-2 text-main border-main rounded-lg normal-case h-9 font-bold bg-secondary hover:bg-secondary-hover" type="submit" + alt='Criar Coleção' > Criar Coleção </button> <button className=" border- text-sm p-2 text-main-text border-main rounded-lg normal-case h-9 font-bold bg-main hover:bg-main-hover" onClick={() => onClose()} + alt='Cancelar' > Cancelar </button> diff --git a/src/app/perfil/[id]/components/GroupButton.js b/src/app/perfil/[id]/components/GroupButton.js index 47f0b8fd5b455b5446e0f2336ffe480e8acb414b..4570de9600322ae18e01a380d627235c1a5db106 100644 --- a/src/app/perfil/[id]/components/GroupButton.js +++ b/src/app/perfil/[id]/components/GroupButton.js @@ -88,6 +88,7 @@ export default function GroupButton({ profileData, idLogin }) { {idLogin == profileData["id"] ? <button className={`text-sm rounded-lg normal-case h-9 font-bold w-[90%] mt-2 text-white bg-secondary hover:bg-secondary-hover `} + alt="Editar meu perfil" > <EditIcon className='m-1' fontSize='small' /> Editar meu perfil @@ -109,6 +110,7 @@ export default function GroupButton({ profileData, idLogin }) { <button className="border text-sm text-main-text border-main rounded-lg normal-case h-9 font-bold w-[90%] mt-2 hover:bg-gray-100 " onClick={() => setShareOpen(true)} + alt="Compartilhar perfil" > <ShareIcon fontSize='small' className='m-1' /> Compartilhar perfil diff --git a/src/app/perfil/[id]/components/ProfileCollections.js b/src/app/perfil/[id]/components/ProfileCollections.js index 5c73d987d4238d4673f2c7b0a4f3467a1592ef5d..46513e5e157fa496cc1ea6d8ee9ee1cdac95563c 100644 --- a/src/app/perfil/[id]/components/ProfileCollections.js +++ b/src/app/perfil/[id]/components/ProfileCollections.js @@ -79,6 +79,7 @@ export default function ProfileCollections({ id, idLogin }) { {idLogin === id && <button className=" inline-block px-2 text-sm text-main border-main rounded-lg normal-case h-9 font-bold bg-secondary hover:bg-secondary-hover" onClick={() => setCollectionOpen(true)} + alt="Criar Nova Coleção" > Criar Nova Coleção </button>} @@ -117,6 +118,7 @@ export default function ProfileCollections({ id, idLogin }) { variant="outlined" className="mb-2 border-hidden hover:bg-transparent rounded-xl normal-case " onClick={() => toggleContent()} + alt="Ver mais" > <p className="hover:bg-main px-4 text-gray-600 text-lg rounded-md"> diff --git a/src/app/perfil/[id]/components/ProfileHomologation.js b/src/app/perfil/[id]/components/ProfileHomologation.js index 5a6d9786b770e6ae3291db2225035c773dea0919..b9867a08f2e591a76d7d08de61d73fb8527b11f4 100644 --- a/src/app/perfil/[id]/components/ProfileHomologation.js +++ b/src/app/perfil/[id]/components/ProfileHomologation.js @@ -61,6 +61,7 @@ export default function ProfileHomologation({ id }) { variant="outlined" className="mt-2 border-secondary rounded-xl hover:border-secondary-hover text-gray-700 normal-case flex gap-2" onClick={() => toggleContent()} + alt="Carregar mais" > {"Carregar mais"} </Button> diff --git a/src/app/perfil/[id]/components/ProfileResources.js b/src/app/perfil/[id]/components/ProfileResources.js index a7081fa98de046eae04b27af2ee36a9c7b68f223..0ae9bffd932c226cad40479853934c2b0efa2e99 100644 --- a/src/app/perfil/[id]/components/ProfileResources.js +++ b/src/app/perfil/[id]/components/ProfileResources.js @@ -59,6 +59,7 @@ export default function ProfileResources({ id, idLogin }) { <Link href="/publicar"> <button className=" inline-block px-2 text-sm text-main border-main rounded-lg normal-case h-9 font-bold bg-orange hover:bg-orange-hover" + alt="Publicar novo recurso" > Publicar novo recurso </button> diff --git a/src/app/perfil/[id]/components/SelectionButtons.js b/src/app/perfil/[id]/components/SelectionButtons.js index 53088f38c380fad63c4bb22ed734d2020fc04925..e17a8aded60de0df52c3748bcc452576c3c4c10a 100644 --- a/src/app/perfil/[id]/components/SelectionButtons.js +++ b/src/app/perfil/[id]/components/SelectionButtons.js @@ -30,6 +30,8 @@ export default function SelectionButtons({ setOptButton, verifyCurator, idProfil <button className="h-12 text-main-text text-base normal-case font-bold w-[100%] hover:bg-gray-100 hover:text-secondary hover:border-b-2 hover:border-secondary focus:text-secondary focus:border-b-2 focus:border-secondary" onClick={() => setOptButton(index)} + // title={item} + alt={item} > {item} </button> diff --git a/src/app/recurso/[id]/components/publisherInfo.js b/src/app/recurso/[id]/components/publisherInfo.js index 03236281df547a520f6df2fcf9df8ea578cf9430..fd1ca93f9a0bce3e9ab9513ffd6500431e417d93 100644 --- a/src/app/recurso/[id]/components/publisherInfo.js +++ b/src/app/recurso/[id]/components/publisherInfo.js @@ -46,10 +46,13 @@ export default function PublisherInfo({ publisher, disabledButton=false }) { fill="true" src={"https://api.portalmec.c3sl.ufpr.br" + publisher.avatar} alt="Publisher Avatar" + title={publisher.name} className="m-4" /> ) : ( - <div className="rounded-full m-4 w-10 h-10 flex-shrink-0 bg-orange truncate"></div> + <div className="rounded-full m-4 w-10 h-10 flex-shrink-0 bg-orange truncate" + title={publisher.name} + ></div> )} <div className="flex flex-col justify-center p-1 text-main-text truncate"> <div className="font-bold text-lg truncate sm:text-wrap">