Initial commit

This commit is contained in:
2026-04-12 06:24:30 +00:00
commit 007f107be6
213 changed files with 25576 additions and 0 deletions
@@ -0,0 +1,22 @@
<x-master-page title="Tambah Tahun Angkatan" description="Tambahkan data tahun ajaran baru untuk kebutuhan kesiswaan.">
<x-master-card title="Form Tahun Angkatan" subtitle="Isi data tahun angkatan dengan lengkap dan benar.">
<form action="{{ route('academic-years.store') }}" method="POST" class="space-y-6">
@csrf
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
<x-form-input name="name" label="Nama Tahun Angkatan" placeholder="Contoh: 2024/2025" required />
<div class="grid grid-cols-2 gap-4">
<x-form-input name="start_year" label="Tahun Mulai" type="number" placeholder="2024" required />
<x-form-input name="end_year" label="Tahun Selesai" type="number" placeholder="2025" required />
</div>
</div>
<x-form-checkbox name="is_active" label="Jadikan tahun angkatan aktif" :checked="false" />
<div class="flex flex-wrap items-center gap-3">
<button type="submit" class="rounded-2xl bg-indigo-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-indigo-200 transition hover:bg-indigo-700">Simpan</button>
<a href="{{ route('academic-years.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Batal</a>
</div>
</form>
</x-master-card>
</x-master-page>
@@ -0,0 +1,23 @@
<x-master-page title="Edit Tahun Angkatan" description="Perbarui data tahun angkatan yang sudah ada.">
<x-master-card title="Form Edit Tahun Angkatan" subtitle="Sesuaikan data lalu simpan perubahan.">
<form action="{{ route('academic-years.update', $academicYear) }}" method="POST" class="space-y-6">
@csrf
@method('PUT')
<div class="grid grid-cols-1 gap-6 md:grid-cols-2">
<x-form-input name="name" label="Nama Tahun Angkatan" :value="$academicYear->name" placeholder="Contoh: 2024/2025" required />
<div class="grid grid-cols-2 gap-4">
<x-form-input name="start_year" label="Tahun Mulai" type="number" :value="$academicYear->start_year" placeholder="2024" required />
<x-form-input name="end_year" label="Tahun Selesai" type="number" :value="$academicYear->end_year" placeholder="2025" required />
</div>
</div>
<x-form-checkbox name="is_active" label="Jadikan tahun angkatan aktif" :checked="$academicYear->is_active" />
<div class="flex flex-wrap items-center gap-3">
<button type="submit" class="rounded-2xl bg-indigo-600 px-5 py-3 text-sm font-semibold text-white shadow-lg shadow-indigo-200 transition hover:bg-indigo-700">Update</button>
<a href="{{ route('academic-years.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Batal</a>
</div>
</form>
</x-master-card>
</x-master-page>
@@ -0,0 +1,70 @@
<x-master-page
title="Tahun Angkatan"
description="Kelola master tahun ajaran dan tahun angkatan siswa."
action-label="Tambah Tahun Angkatan"
:action-url="route('academic-years.create')"
>
<x-master-card title="Filter Data" subtitle="Cari tahun angkatan berdasarkan nama atau tahun.">
<form method="GET" action="{{ route('academic-years.index') }}" class="flex flex-col gap-4 md:flex-row md:items-end">
<div class="md:flex-1">
<x-form-input name="search" label="Pencarian" :value="$search" placeholder="Cari tahun angkatan..." />
</div>
<div class="flex items-end gap-3">
<button type="submit" class="rounded-2xl bg-slate-900 px-5 py-3 text-sm font-semibold text-white transition hover:bg-slate-800">Cari</button>
<a href="{{ route('academic-years.index') }}" class="rounded-2xl border border-slate-200 px-5 py-3 text-sm font-semibold text-slate-700 transition hover:bg-slate-50">Reset</a>
</div>
</form>
</x-master-card>
<x-data-table :headers="['Nama', 'Tahun Mulai', 'Tahun Selesai', 'Dipakai', 'Status', 'Aksi']">
@forelse ($academicYears as $academicYear)
<tr>
<td class="px-6 py-4">
<div class="font-semibold text-slate-800">{{ $academicYear->name }}</div>
</td>
<td class="px-6 py-4 text-sm text-slate-600">{{ $academicYear->start_year }}</td>
<td class="px-6 py-4 text-sm text-slate-600">{{ $academicYear->end_year }}</td>
<td class="px-6 py-4">
<div class="flex flex-wrap gap-2">
<span class="rounded-full bg-sky-100 px-3 py-1 text-xs font-semibold text-sky-700">Kelas: {{ $academicYear->classes_count }}</span>
<span class="rounded-full bg-indigo-100 px-3 py-1 text-xs font-semibold text-indigo-700">Siswa: {{ $academicYear->students_count }}</span>
</div>
</td>
<td class="px-6 py-4">
@if ($academicYear->is_active)
<span class="rounded-full bg-emerald-100 px-3 py-1 text-xs font-semibold text-emerald-700">Aktif</span>
@else
<span class="rounded-full bg-slate-100 px-3 py-1 text-xs font-semibold text-slate-600">Nonaktif</span>
@endif
</td>
<td class="px-6 py-4">
<div class="flex flex-wrap items-center gap-2">
<a href="{{ route('academic-years.edit', $academicYear) }}" class="rounded-xl border border-slate-200 px-3 py-2 text-xs font-semibold text-slate-700 transition hover:bg-slate-50">Edit</a>
@php
$canDelete = $academicYear->classes_count === 0 && $academicYear->students_count === 0;
@endphp
@if ($canDelete)
<form action="{{ route('academic-years.destroy', $academicYear) }}" method="POST" class="delete-form" data-entity="tahun angkatan {{ $academicYear->name }}">
@csrf
@method('DELETE')
<button type="submit" class="rounded-xl border border-rose-200 px-3 py-2 text-xs font-semibold text-rose-600 transition hover:bg-rose-50">Hapus</button>
</form>
@else
<button type="button" disabled class="cursor-not-allowed rounded-xl border border-slate-200 bg-slate-100 px-3 py-2 text-xs font-semibold text-slate-400" title="Tidak bisa dihapus karena masih dipakai data lain">
Dipakai
</button>
@endif
</div>
</td>
</tr>
@empty
<tr>
<td colspan="6" class="px-6 py-10 text-center text-sm text-slate-500">Belum ada data tahun angkatan.</td>
</tr>
@endforelse
</x-data-table>
<div>
{{ $academicYears->links() }}
</div>
</x-master-page>