import { Card, CardContent, CardHeader, CardTitle } from "@/Components/ui/card"
import { StatsCard } from "@/Components/StatsCard"
import { GraduationCap, HomeIcon } from "lucide-react";
import { Head } from "@inertiajs/react";
import { MapContainer, GeoJSON } from 'react-leaflet';
import 'leaflet/dist/leaflet.css';
import { PathOptions, StyleFunction } from 'leaflet';
import React, { useEffect, useState } from "react";
import { Feature, Geometry, GeoJsonObject } from 'geojson';
import ColorRangeLegend from "@/Components/Map/ColorRangeLegend";
import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, Legend, ResponsiveContainer } from 'recharts';
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/Components/ui/table";
import { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent';
import { TooltipProps } from 'recharts';
import { Link, router, usePage } from "@inertiajs/react";
import TableSortHeader from "@/Components/DataTable/TableSortHeader.jsx";
import TablePagination from "@/Components/DataTable/TablePagination.jsx";
import TableToolbar from "@/Components/DataTable/TableToolbar.jsx";
import TableFilter from "@/Components/DataTable/TableFilter.jsx";
import { BadgeAlertIcon, BadgeCheckIcon, EyeIcon, FileDownIcon, Pencil, ScrollIcon, Trash } from "lucide-react";
import useDebouncedSearch from "@/hooks/useDebouncedSearch.js";
import useSorting from "@/hooks/useSorting.js";
import { PageProps } from '@/types';
import GuestLayout from '@/Layouts/GuestLayout';
export default function JuknisPelatihanPage() {
const [openIndex, setOpenIndex] = useState<number>(-1);
const { filters } = usePage<PageProps>().props;
const datatable = usePage<PageProps>().props.datatable;
const { data, links } = usePage<PageProps>().props.datatable;
const { params, setParams, setTimeDebounce } = useDebouncedSearch(
route(`${route().current()}`),
filters
);
const { sort } = useSorting(filters, setParams);
const [isMobileMenuOpen, setIsMobileMenuOpen] = useState(false);
return (
<GuestLayout>
<div className="min-h-screen bg-gray-50">
<Head title="Home" />
{/* Breadcrumb */}
<div className="container mx-auto px-4 py-4">
<div className="flex items-center gap-2 text-sm text-gray-600">
<HomeIcon className="h-4 w-4" />
<span>/</span>
<span>Juknis Pelatihan</span>
</div>
</div>
{/* Stats Grid */}
<Card className="container mx-auto overflow-hidden mb-4">
<CardHeader className="bg-blue-500 text-white ">
<CardTitle><h1>Juknis Pelatihan</h1></CardTitle>
</CardHeader>
<CardContent className="min-h-[600px] py-6">
<div className="space-y-4">
<TableToolbar
placeholder="Cari Juknis Pelatihan"
search={params.search}
params={params}
setParams={setParams}
setTimeDebounce={setTimeDebounce}
/>
<div className="">
<Table>
<TableHeader>
<TableRow>
<TableHead>
<TableSortHeader
className=""
title="Nama"
onClick={() => {
setTimeDebounce(50)
sort('nama')
}}
sort={params.col === 'start_date' ? params.sort : 'desc'}
/>
</TableHead>
</TableRow>
</TableHeader>
<TableBody>
{
data.length > 0 ? (
data.map((pelatihan: any, index: number) => (
<TableRow key={pelatihan.id} className="bg-white">
<TableCell>
<div key={index} className="list">
<div className="bg-slate-100 p-5">
<div className="flex justify-between items-center">
<div className="p-1">{pelatihan.nama}</div>
<button
className="text-3xl font-bold p-1"
onClick={() =>
setOpenIndex(openIndex === index ? 0 : index)
}
>
{openIndex === index ? "−" : "+"}
</button>
</div>
</div>
{openIndex === index && (
<div className="bg-slate-200 w-[95%] mx-auto p-5">
<div className="flex justify-between">
<div className="font-bold">{pelatihan.nama}</div>
<a href={route("juknis-pelatihan.download",{ id: pelatihan.id })} target="_blank" className="download text-red-600 font-bold">Download</a>
</div>
</div>
)}
</div>
</TableCell>
</TableRow>
))
) : (
<TableRow>
<TableCell colSpan={6} className="h-24 text-center bg-white">
No results found.
</TableCell>
</TableRow>
)
}
</TableBody>
</Table>
</div>
<TablePagination links={links} meta={datatable} />
</div>
<br />
{/* <div className="space-y-4">
{data.map((item, index) => (
<div key={index} className="list">
<div className="bg-slate-100 p-5">
<div className="flex justify-between items-center">
<div className="p-1">{item}</div>
<button
className="text-3xl font-bold p-1"
onClick={() =>
setOpenIndex(openIndex === index ? null : index)
}
>
{openIndex === index ? "−" : "+"}
</button>
</div>
</div>
{openIndex === index && (
<div className="bg-slate-200 w-[95%] mx-auto p-5">
<div className="flex justify-between">
<div className="font-bold">{item}</div>
<div className="download text-red-600 font-bold">Download.</div>
</div>
</div>
)}
</div>
))}
</div> */}
</CardContent>
</Card>
</div>
</GuestLayout>
)
}
Anons79 File Manager Version 1.0, Coded By Anons79
Email: [email protected]