qudoco-fe/components/details/document-sidebar-details.tsx

181 lines
6.0 KiB
TypeScript

"use client";
import { useState } from "react";
import { Download, Facebook, Twitter } from "lucide-react";
export default function DocumentSidebar() {
const [selected, setSelected] = useState("4K");
const options = [
{
title: "DOC",
size: "296KB",
file: "138 Mb",
format: "mov",
},
{
title: "PPT",
size: "296KB",
file: "100 Mb",
format: "mov",
},
{
title: "PDF",
size: "296KB",
file: "80 Mb",
format: "mp4",
},
];
return (
<div className="bg-white border border-gray-200 rounded-3xl p-6 shadow-sm space-y-6">
{/* TAG */}
<div>
<span className="bg-red-600 text-white text-xs px-3 py-1 rounded-md font-medium">
POLRI
</span>
<div className="flex flex-wrap gap-3 mt-4">
<Tag label="Tag 1" />
<Tag label="Tag 2" />
<Tag label="Tag 3" />
</div>
</div>
<hr />
{/* OPTIONS */}
<div>
<h3 className="text-base font-semibold mb-5">Opsi Ukuran Document</h3>
<div className="space-y-4">
{options.map((item) => (
<div
key={item.title}
onClick={() => setSelected(item.title)}
className="cursor-pointer"
>
<div className="flex items-start justify-between">
{/* LEFT */}
<div className="flex items-start gap-4">
{/* CUSTOM RADIO */}
<div
className={`h-6 w-6 rounded-full border-2 flex items-center justify-center transition
${
selected === item.title
? "border-blue-600"
: "border-gray-400"
}`}
>
{selected === item.title && (
<div className="h-3 w-3 bg-blue-600 rounded-full" />
)}
</div>
<div>
<p className="text-lg font-semibold">{item.title}</p>
</div>
</div>
{/* RIGHT */}
<div className="text-right">
<p className="font-semibold text-sm">{item.size}</p>
</div>
</div>
<div className="mt-4 border-b border-gray-200" />
</div>
))}
</div>
</div>
{/* DOWNLOAD */}
<div className="space-y-4">
<label className="flex items-center gap-3 text-sm">
<input
type="checkbox"
defaultChecked
className="h-5 w-5 accent-green-600"
/>
Unduh Semua Berkas?
</label>
<button className="w-full bg-[#9b6a1d] hover:bg-[#815515] text-white py-4 rounded-xl flex items-center justify-center gap-3 text-base font-medium transition">
<Download size={20} />
Unduh
</button>
</div>
{/* SHARE */}
<div className="flex flex-row items-center gap-3 ">
<p className="text-sm">Bagikan:</p>
<div className="flex gap-4">
<ShareIcon>
<div className="text-[#9A691D]">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
>
<path
fill="currentColor"
d="M9.198 21.5h4v-8.01h3.604l.396-3.98h-4V7.5a1 1 0 0 1 1-1h3v-4h-3a5 5 0 0 0-5 5v2.01h-2l-.396 3.98h2.396z"
/>
</svg>
</div>
</ShareIcon>
<ShareIcon>
<div className="text-[#9A691D]">
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
>
<path
fill="currentColor"
d="M22.46 6c-.77.35-1.6.58-2.46.69c.88-.53 1.56-1.37 1.88-2.38c-.83.5-1.75.85-2.72 1.05C18.37 4.5 17.26 4 16 4c-2.35 0-4.27 1.92-4.27 4.29c0 .34.04.67.11.98C8.28 9.09 5.11 7.38 3 4.79c-.37.63-.58 1.37-.58 2.15c0 1.49.75 2.81 1.91 3.56c-.71 0-1.37-.2-1.95-.5v.03c0 2.08 1.48 3.82 3.44 4.21a4.2 4.2 0 0 1-1.93.07a4.28 4.28 0 0 0 4 2.98a8.52 8.52 0 0 1-5.33 1.84q-.51 0-1.02-.06C3.44 20.29 5.7 21 8.12 21C16 21 20.33 14.46 20.33 8.79c0-.19 0-.37-.01-.56c.84-.6 1.56-1.36 2.14-2.23"
/>
</svg>
</div>
</ShareIcon>
<ShareIcon>
<div className="text-[#9A691D]">
<svg
xmlns="http://www.w3.org/2000/svg"
width="16"
height="16"
viewBox="0 0 16 16"
>
<path
fill="currentColor"
d="M8 0a8 8 0 1 1-4.075 14.886L.658 15.974a.5.5 0 0 1-.632-.632l1.089-3.266A8 8 0 0 1 8 0M5.214 4.004a.7.7 0 0 0-.526.266C4.508 4.481 4 4.995 4 6.037c0 1.044.705 2.054.804 2.196c.098.138 1.388 2.28 3.363 3.2q.55.255 1.12.446c.472.16.902.139 1.242.085c.379-.06 1.164-.513 1.329-1.01c.163-.493.163-.918.113-1.007c-.049-.088-.18-.142-.378-.25c-.196-.105-1.165-.618-1.345-.687c-.18-.073-.312-.106-.443.105c-.132.213-.507.691-.623.832c-.113.139-.23.159-.425.053c-.198-.105-.831-.33-1.584-1.054c-.585-.561-.98-1.258-1.094-1.469c-.116-.213-.013-.326.085-.433c.09-.094.198-.246.296-.371c.097-.122.132-.21.198-.353c.064-.141.031-.266-.018-.371s-.443-1.152-.607-1.577c-.16-.413-.323-.355-.443-.363c-.114-.005-.245-.005-.376-.005"
/>
</svg>
</div>
</ShareIcon>
</div>
</div>
</div>
);
}
/* COMPONENTS */
function Tag({ label }: { label: string }) {
return (
<span className="text-xs border border-gray-400 px-4 py-1 rounded-full bg-white">
{label}
</span>
);
}
function ShareIcon({ children }: { children: React.ReactNode }) {
return (
<div className="h-10 w-10 bg-gray-100 rounded-full flex items-center justify-center hover:bg-gray-200 transition cursor-pointer">
{children}
</div>
);
}