[PEDIDO DE AJUDA][NEXT JS] Como melhorar essa view.
Queria uma dica, sobre como poderia melhror essa view, sabe estou aprendendo sozinho, tenho um conhecimento legal com python já, mas só isso não é necessário, então comecei a realmente a aprender java, e tenho gostado bastante, mas estou vendo que tudo está ficando sempre bem grande e ainda quero colocar as funções ai que ainda nem coloquei, como editar,deletar, compartilhar, adicionar uma nova sessão, qual seria a dica de vocês.
O repositório está privado, mas se precisar eu abro pra mostrar como está ficando, queria dicas de como melhorar.
import React, { useState } from "react";
import { FcDownload, FcPlus, FcSettings } from "react-icons/fc";
import { CiCircleChevUp, CiCircleChevDown } from "react-icons/ci";
import Link from "next/link";
function DashBoard() {
const [openSessions, setOpenSessions] = useState([]);
const [sessions, setSessions] = useState([
{
name: "Farmacologia",
files: [
{
name: "Aula sobre medicamentos",
type: "video",
},
{
name: "Aula sobre absorção de medicamentos",
type: "video",
},
{
name: "Aula sobre os tipos de medicamentos",
type: "video",
},
{
name: "Aula sobre os tipos de medicamentos e suas ações no organismo",
type: "video",
},
],
},
{
name: "Farmacognosia",
files: [
{
name: "Aula sobre plantas medicinais",
type: "video",
},
{
name: "Aula sobre os tipos de extrações",
type: "video",
},
],
},
]);
return (
<>
<div className="mx-left container max-w-xl">
<div className="h-max w-full p-6 ">
<h1 className="flex items-end pb-3 text-2xl font-bold text-gray-700">
<span className="flex-1">Minhas sessões</span>
<span className="flex-3 text-end text-sm">2/10</span>
<FcPlus
onClick={() => {}}
className="flex-2 ml-4 h-5 cursor-pointer hover:scale-110"
/>
</h1>
{sessions.map((session, index) => {
const isOpen = openSessions.includes(index);
return (
<details
key={index}
className="my-2 rounded-lg border-[0.0125rem] border-gray-400 border-opacity-30 px-4 py-4 text-sm shadow-md"
>
<summary
className="flex w-full flex-1 cursor-pointer select-none flex-row justify-between font-bold"
onClick={() => {
if (isOpen) {
setOpenSessions(
openSessions.filter((item) => item !== index),
);
} else {
setOpenSessions([...openSessions, index]);
}
}}
>
<button>
{isOpen ? (
<CiCircleChevDown className="h-4 w-4" />
) : (
<CiCircleChevUp className="h-4 w-4" />
)}
</button>
<p className="flex-1 px-5 text-start">{session.name}</p>
<p className="flex flex-1 flex-row items-center justify-end gap-2">
{session.files.length}/10
</p>
<details className="flex-3 relative ml-4 flex flex-row items-center justify-end gap-2">
<summary className="list-none">
<FcSettings />
</summary>
<div className="absolute right-0 top-[105%] z-10 flex w-40 flex-col items-start divide-y-[0.0125rem] rounded-lg border-[0.0125rem] bg-white shadow-md ">
<button className="w-full flex-1 px-4 py-2 text-start">
Editar
</button>
<button className="w-full flex-1 px-4 py-2 text-start">
Backup
</button>
<button className="w-full flex-1 px-4 py-2 text-start">
Compartilhar
</button>
<button className="w-full flex-1 px-4 py-2 text-start">
Excluir
</button>
</div>
</details>
</summary>
<div className="mt-2 flex flex-col divide-y-[0.0125rem] divide-gray-300 divide-opacity-30 ">
{session.files.map((file, index) => {
return (
<div
key={index}
className="my-1 flex flex-row items-center justify-center gap-2"
>
<div className="flex-1">{file.name}</div>
<Link
href="/dashboard"
className="flex-3 flex items-center justify-end"
>
<FcDownload />
</Link>
</div>
);
})}
</div>
</details>
);
})}
</div>
</div>
</>
);
}
export default DashBoard;