Anons79 Mini Shell

Directory : /home/aplikasiposinfo/public_html/talent.gosepakat.id/resources/js/Pages/
Upload File :
Current File : /home/aplikasiposinfo/public_html/talent.gosepakat.id/resources/js/Pages/JuknisPelatihan.tsx

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]