diff --git a/resources/js/components/app-sidebar.tsx b/resources/js/components/app-sidebar.tsx
index 0344d59..3dd46d2 100644
--- a/resources/js/components/app-sidebar.tsx
+++ b/resources/js/components/app-sidebar.tsx
@@ -40,20 +40,20 @@ import {
SidebarMenuButton,
SidebarMenuItem,
} from '@/components/ui/sidebar';
-import { index as feedbackRoute } from '@/routes/admin/feedback';
-import { index as academicAdvisingLogsRoute } from '@/routes/admin/services/academic-advising-logs';
-import { index as announcementsRoute } from '@/routes/admin/announcements';
import { index as assignmentsRoute } from '@/routes/admin/academic-classes/assignments';
import { index as attendancesRoute } from '@/routes/admin/academic-classes/attendances';
-import { index as courseClassesRoute } from '@/routes/admin/manage/course-classes';
import { index as courseRegistrationsRoute } from '@/routes/admin/academic-classes/course-registrations';
-import { index as coursesRoute } from '@/routes/admin/manage/courses';
-import { index as letterRequestsRoute } from '@/routes/admin/services/letter-requests';
import { index as materialsRoute } from '@/routes/admin/academic-classes/materials';
import { index as schedulesRoute } from '@/routes/admin/academic-classes/schedules';
+import { index as announcementsRoute } from '@/routes/admin/announcements';
+import { index as feedbackRoute } from '@/routes/admin/feedback';
import { index as tuitionInvoicesRoute } from '@/routes/admin/finances/tuition-invoices';
+import { index as courseClassesRoute } from '@/routes/admin/manage/course-classes';
+import { index as coursesRoute } from '@/routes/admin/manage/courses';
import { index as academicTerm } from '@/routes/admin/master/academic-terms';
import { index as departmentsRoute } from '@/routes/admin/master/departments';
+import { index as academicAdvisingLogsRoute } from '@/routes/admin/services/academic-advising-logs';
+import { index as letterRequestsRoute } from '@/routes/admin/services/letter-requests';
import { edit as appearanceRoute } from '@/routes/admin/settings/appearance';
import { edit as profileRoute } from '@/routes/admin/settings/profile';
import { edit as securityRoute } from '@/routes/admin/settings/security';
diff --git a/resources/js/components/confirm-dialog.tsx b/resources/js/components/confirm-dialog.tsx
index f52a26e..153016a 100644
--- a/resources/js/components/confirm-dialog.tsx
+++ b/resources/js/components/confirm-dialog.tsx
@@ -1,3 +1,5 @@
+import { Check, Trash2, X } from 'lucide-react';
+import type { ReactNode } from 'react';
import { Button } from '@/components/ui/button';
import {
Dialog,
@@ -14,6 +16,7 @@ type ConfirmDialogProps = {
title: string;
description: string;
confirmLabel?: string;
+ confirmIcon?: ReactNode;
cancelLabel?: string;
variant?: 'default' | 'destructive';
onConfirm: () => void;
@@ -26,11 +29,20 @@ export function ConfirmDialog({
title,
description,
confirmLabel = 'Konfirmasi',
+ confirmIcon,
cancelLabel = 'Batal',
variant = 'destructive',
onConfirm,
loading = false,
}: ConfirmDialogProps) {
+ const icon =
+ confirmIcon ??
+ (variant === 'destructive' ? (
+
+ ) : (
+
+ ));
+
return (
@@ -43,6 +55,7 @@ export function ConfirmDialog({
variant="outline"
onClick={() => onOpenChange(false)}
>
+
{cancelLabel}
+ {icon}
{confirmLabel}
diff --git a/resources/js/components/form-dialog.tsx b/resources/js/components/form-dialog.tsx
index e682027..578f0f8 100644
--- a/resources/js/components/form-dialog.tsx
+++ b/resources/js/components/form-dialog.tsx
@@ -1,3 +1,6 @@
+import { Form } from '@inertiajs/react';
+import { Save, X } from 'lucide-react';
+import type { ReactNode } from 'react';
import { Button } from '@/components/ui/button';
import {
Dialog,
@@ -6,8 +9,6 @@ import {
DialogHeader,
DialogTitle,
} from '@/components/ui/dialog';
-import { Form } from '@inertiajs/react';
-import type { ReactNode } from 'react';
type FormDialogProps = {
open: boolean;
@@ -63,12 +64,14 @@ export function FormDialog({
variant="outline"
onClick={() => onOpenChange(false)}
>
+
Batal
+
{processing ? submittingLabel : submitLabel}
diff --git a/resources/js/components/nav-main.tsx b/resources/js/components/nav-main.tsx
index d444978..12f1351 100644
--- a/resources/js/components/nav-main.tsx
+++ b/resources/js/components/nav-main.tsx
@@ -1,5 +1,6 @@
"use client"
+import { Link, usePage } from "@inertiajs/react";
import {
SidebarGroup,
SidebarGroupLabel,
@@ -7,7 +8,6 @@ import {
SidebarMenuButton,
SidebarMenuItem
} from "@/components/ui/sidebar";
-import { Link, usePage } from "@inertiajs/react";
export type NavItem = {
name: string
diff --git a/resources/js/components/nav-secondary.tsx b/resources/js/components/nav-secondary.tsx
index 832692f..c933b7f 100644
--- a/resources/js/components/nav-secondary.tsx
+++ b/resources/js/components/nav-secondary.tsx
@@ -1,7 +1,7 @@
"use client"
+import type {Icon} from "@tabler/icons-react";
import * as React from "react"
-import { type Icon } from "@tabler/icons-react"
import {
SidebarGroup,
diff --git a/resources/js/pages/admin/academic-classes/assignments/submissions.tsx b/resources/js/pages/admin/academic-classes/assignments/submissions.tsx
index 1e1acfe..68fd2b0 100644
--- a/resources/js/pages/admin/academic-classes/assignments/submissions.tsx
+++ b/resources/js/pages/admin/academic-classes/assignments/submissions.tsx
@@ -1,7 +1,7 @@
import { Head, router } from '@inertiajs/react';
import type { ColumnDef } from '@tanstack/react-table';
import { format } from 'date-fns';
-import { Pencil, Plus, Trash2 } from 'lucide-react';
+import { ArrowLeft, Pencil, Plus, Trash2 } from 'lucide-react';
import { useState } from 'react';
import { DataTable } from '@/components/data-table';
import { DateTimeField } from '@/components/datetime-field';
@@ -161,7 +161,10 @@ export default function SubmissionIndex({
title="Pengumpulan Tugas"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
diff --git a/resources/js/pages/admin/academic-classes/attendances/index.tsx b/resources/js/pages/admin/academic-classes/attendances/index.tsx
index 6694da2..0b929a8 100644
--- a/resources/js/pages/admin/academic-classes/attendances/index.tsx
+++ b/resources/js/pages/admin/academic-classes/attendances/index.tsx
@@ -1,6 +1,6 @@
import { Head, Link, router } from '@inertiajs/react';
import { format } from 'date-fns';
-import { ClipboardCheck, Plus, Trash2 } from 'lucide-react';
+import { ClipboardCheck, Pencil, Plus, Trash2, X } from 'lucide-react';
import { useState } from 'react';
import { DeleteConfirmDialog } from '@/components/delete-confirm-dialog';
import { PageHeader } from '@/components/page-header';
@@ -123,10 +123,14 @@ export default function AttendanceIndex({ sessions, courseClasses }: Props) {
]).url
}
>
+
Lihat / Edit
) : (
- Lihat / Edit
+
+
+ Lihat / Edit
+
)}
onOpenChange(false)}
>
+
Batal
- Kembali
+
+
+ Kembali
+
}
/>
diff --git a/resources/js/pages/admin/finances/tuition-invoices/payments.tsx b/resources/js/pages/admin/finances/tuition-invoices/payments.tsx
index dfedda5..67a5f94 100644
--- a/resources/js/pages/admin/finances/tuition-invoices/payments.tsx
+++ b/resources/js/pages/admin/finances/tuition-invoices/payments.tsx
@@ -1,7 +1,7 @@
import { Head, router } from '@inertiajs/react';
import type { ColumnDef } from '@tanstack/react-table';
import { format } from 'date-fns';
-import { Paperclip, Pencil, Plus, Trash2 } from 'lucide-react';
+import { ArrowLeft, Paperclip, Pencil, Plus, Trash2 } from 'lucide-react';
import { useState } from 'react';
import { DataTable } from '@/components/data-table';
import { DateTimeField } from '@/components/datetime-field';
@@ -176,7 +176,10 @@ export default function TuitionPaymentIndex({ invoice, payments }: Props) {
title="Pembayaran"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
diff --git a/resources/js/pages/admin/manage/course-classes/enrollments.tsx b/resources/js/pages/admin/manage/course-classes/enrollments.tsx
index 8ac0f0e..0a256e1 100644
--- a/resources/js/pages/admin/manage/course-classes/enrollments.tsx
+++ b/resources/js/pages/admin/manage/course-classes/enrollments.tsx
@@ -1,7 +1,7 @@
import { Head, router } from '@inertiajs/react';
import type { ColumnDef } from '@tanstack/react-table';
import { format } from 'date-fns';
-import { Trash2, UserPlus } from 'lucide-react';
+import { ArrowLeft, Trash2, UserPlus } from 'lucide-react';
import { useState } from 'react';
import { DataTable } from '@/components/data-table';
import { DeleteConfirmDialog } from '@/components/delete-confirm-dialog';
@@ -109,7 +109,10 @@ export default function ClassEnrollmentIndex({
title="Peserta Kelas"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
diff --git a/resources/js/pages/admin/settings/profile.tsx b/resources/js/pages/admin/settings/profile.tsx
index b3d28b4..237a6b0 100644
--- a/resources/js/pages/admin/settings/profile.tsx
+++ b/resources/js/pages/admin/settings/profile.tsx
@@ -1,5 +1,6 @@
import { Form, Head, Link, usePage } from '@inertiajs/react';
import { format } from 'date-fns';
+import { Save } from 'lucide-react';
import { useState } from 'react';
import ProfileController from '@/actions/App/Http/Controllers/Admin/Settings/ProfileController';
import { DatePicker } from '@/components/date-picker';
@@ -368,6 +369,7 @@ export default function Profile({
disabled={processing}
data-test="update-profile-button"
>
+
Simpan
diff --git a/resources/js/pages/admin/settings/security.tsx b/resources/js/pages/admin/settings/security.tsx
index 0a3b279..45fbbfa 100644
--- a/resources/js/pages/admin/settings/security.tsx
+++ b/resources/js/pages/admin/settings/security.tsx
@@ -1,4 +1,5 @@
import { Form, Head } from '@inertiajs/react';
+import { Save } from 'lucide-react';
import { useRef } from 'react';
import SecurityController from '@/actions/App/Http/Controllers/Admin/Settings/SecurityController';
import Heading from '@/components/heading';
@@ -113,6 +114,7 @@ export default function Security({ passwordRules }: Props) {
disabled={processing}
data-test="update-password-button"
>
+
Simpan
diff --git a/resources/js/pages/admin/users/administrators/create.tsx b/resources/js/pages/admin/users/administrators/create.tsx
index 178d21e..f72dc82 100644
--- a/resources/js/pages/admin/users/administrators/create.tsx
+++ b/resources/js/pages/admin/users/administrators/create.tsx
@@ -1,3 +1,7 @@
+import { Form, Head } from '@inertiajs/react';
+import { format } from 'date-fns';
+import { ArrowLeft, Save } from 'lucide-react';
+import { useState } from 'react';
import { DatePicker } from '@/components/date-picker';
import InputError from '@/components/input-error';
import { PageHeader } from '@/components/page-header';
@@ -10,9 +14,6 @@ import { PhoneInput } from '@/components/ui/phone-input';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Textarea } from '@/components/ui/textarea';
import { index, store } from '@/routes/admin/users/administrators';
-import { Form, Head } from '@inertiajs/react';
-import { format } from 'date-fns';
-import { useState } from 'react';
type Role = { id: number; name: string };
@@ -34,7 +35,10 @@ export default function AdministratorCreate({ roles }: Props) {
title="Tambah Administrator"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
@@ -148,6 +152,7 @@ export default function AdministratorCreate({ roles }: Props) {
+
Simpan
diff --git a/resources/js/pages/admin/users/administrators/edit.tsx b/resources/js/pages/admin/users/administrators/edit.tsx
index e16f855..f997f6b 100644
--- a/resources/js/pages/admin/users/administrators/edit.tsx
+++ b/resources/js/pages/admin/users/administrators/edit.tsx
@@ -1,3 +1,7 @@
+import { Form, Head } from '@inertiajs/react';
+import { format } from 'date-fns';
+import { ArrowLeft, Save } from 'lucide-react';
+import { useState } from 'react';
import { DatePicker } from '@/components/date-picker';
import InputError from '@/components/input-error';
import { PageHeader } from '@/components/page-header';
@@ -10,9 +14,6 @@ import { PhoneInput } from '@/components/ui/phone-input';
import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Textarea } from '@/components/ui/textarea';
import { index, update } from '@/routes/admin/users/administrators';
-import { Form, Head } from '@inertiajs/react';
-import { format } from 'date-fns';
-import { useState } from 'react';
type Role = { id: number; name: string };
@@ -45,7 +46,10 @@ export default function AdministratorEdit({ user, roles }: Props) {
title="Edit Administrator"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
@@ -159,6 +163,7 @@ export default function AdministratorEdit({ user, roles }: Props) {
+
Simpan
diff --git a/resources/js/pages/admin/users/administrators/index.tsx b/resources/js/pages/admin/users/administrators/index.tsx
index 6bfa2a3..1197840 100644
--- a/resources/js/pages/admin/users/administrators/index.tsx
+++ b/resources/js/pages/admin/users/administrators/index.tsx
@@ -1,3 +1,6 @@
+import { Head, router } from '@inertiajs/react';
+import { Plus, RotateCcw } from 'lucide-react';
+import { useState } from 'react';
import { ConfirmDialog } from '@/components/confirm-dialog';
import type { PaginationState } from '@/components/data-table';
import { DataTable } from '@/components/data-table';
@@ -12,9 +15,6 @@ import {
edit,
reset_password
} from '@/routes/admin/users/administrators';
-import { Head, router } from '@inertiajs/react';
-import { Plus } from 'lucide-react';
-import { useState } from 'react';
import type { Administrator } from './columns';
import { createAdministratorColumns } from './columns';
@@ -135,6 +135,7 @@ export default function AdministratorIndex({ administrators }: Props) {
: ''
}
confirmLabel="Reset"
+ confirmIcon={ }
variant="default"
onConfirm={handleResetPassword}
/>
diff --git a/resources/js/pages/admin/users/lecturers/create.tsx b/resources/js/pages/admin/users/lecturers/create.tsx
index c55516b..07393fe 100644
--- a/resources/js/pages/admin/users/lecturers/create.tsx
+++ b/resources/js/pages/admin/users/lecturers/create.tsx
@@ -1,3 +1,7 @@
+import { Form, Head } from '@inertiajs/react';
+import { format } from 'date-fns';
+import { ArrowLeft, Save } from 'lucide-react';
+import { useState } from 'react';
import { DatePicker } from '@/components/date-picker';
import InputError from '@/components/input-error';
import { PageHeader } from '@/components/page-header';
@@ -10,9 +14,6 @@ import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { index, store } from '@/routes/admin/users/lecturers';
-import { Form, Head } from '@inertiajs/react';
-import { format } from 'date-fns';
-import { useState } from 'react';
type Department = { id: number; name: string };
@@ -33,7 +34,10 @@ export default function LecturerCreate({ departments }: Props) {
title="Tambah Dosen"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
@@ -162,6 +166,7 @@ export default function LecturerCreate({ departments }: Props) {
+
Simpan
diff --git a/resources/js/pages/admin/users/lecturers/edit.tsx b/resources/js/pages/admin/users/lecturers/edit.tsx
index 7b66ecf..91a1840 100644
--- a/resources/js/pages/admin/users/lecturers/edit.tsx
+++ b/resources/js/pages/admin/users/lecturers/edit.tsx
@@ -1,3 +1,7 @@
+import { Form, Head } from '@inertiajs/react';
+import { format } from 'date-fns';
+import { ArrowLeft, Save } from 'lucide-react';
+import { useState } from 'react';
import { DatePicker } from '@/components/date-picker';
import InputError from '@/components/input-error';
import { PageHeader } from '@/components/page-header';
@@ -10,9 +14,6 @@ import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { index, update } from '@/routes/admin/users/lecturers';
-import { Form, Head } from '@inertiajs/react';
-import { format } from 'date-fns';
-import { useState } from 'react';
type Department = { id: number; name: string };
@@ -44,7 +45,10 @@ export default function LecturerEdit({ user, departments }: Props) {
title="Edit Dosen"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
@@ -172,6 +176,7 @@ export default function LecturerEdit({ user, departments }: Props) {
+
Simpan
diff --git a/resources/js/pages/admin/users/lecturers/index.tsx b/resources/js/pages/admin/users/lecturers/index.tsx
index c8b6c3b..feb5889 100644
--- a/resources/js/pages/admin/users/lecturers/index.tsx
+++ b/resources/js/pages/admin/users/lecturers/index.tsx
@@ -1,8 +1,8 @@
import { Head, router } from '@inertiajs/react';
-import { Plus } from 'lucide-react';
+import { Plus, RotateCcw } from 'lucide-react';
import { useState } from 'react';
-import type { PaginationState } from '@/components/data-table';
import { ConfirmDialog } from '@/components/confirm-dialog';
+import type { PaginationState } from '@/components/data-table';
import { DataTable } from '@/components/data-table';
import { DeleteConfirmDialog } from '@/components/delete-confirm-dialog';
import { PageHeader } from '@/components/page-header';
@@ -135,6 +135,7 @@ export default function LecturerIndex({ lecturers }: Props) {
: ''
}
confirmLabel="Reset"
+ confirmIcon={ }
variant="default"
onConfirm={handleResetPassword}
/>
diff --git a/resources/js/pages/admin/users/students/create.tsx b/resources/js/pages/admin/users/students/create.tsx
index 6fae06d..8589bc1 100644
--- a/resources/js/pages/admin/users/students/create.tsx
+++ b/resources/js/pages/admin/users/students/create.tsx
@@ -1,3 +1,7 @@
+import { Form, Head } from '@inertiajs/react';
+import { format } from 'date-fns';
+import { ArrowLeft, Save } from 'lucide-react';
+import { useState } from 'react';
import { DatePicker } from '@/components/date-picker';
import InputError from '@/components/input-error';
import { PageHeader } from '@/components/page-header';
@@ -10,9 +14,6 @@ import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { index, store } from '@/routes/admin/users/students';
-import { Form, Head } from '@inertiajs/react';
-import { format } from 'date-fns';
-import { useState } from 'react';
type Department = { id: number; name: string };
type Lecturer = { id: number; lecturer_number: string; user: { profile: { full_name: string } | null } | null };
@@ -35,7 +36,10 @@ export default function StudentCreate({ departments, lecturers }: Props) {
title="Tambah Mahasiswa"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
@@ -190,6 +194,7 @@ export default function StudentCreate({ departments, lecturers }: Props) {
+
Simpan
diff --git a/resources/js/pages/admin/users/students/edit.tsx b/resources/js/pages/admin/users/students/edit.tsx
index 6b223c1..ea8e8a3 100644
--- a/resources/js/pages/admin/users/students/edit.tsx
+++ b/resources/js/pages/admin/users/students/edit.tsx
@@ -1,3 +1,7 @@
+import { Form, Head } from '@inertiajs/react';
+import { format } from 'date-fns';
+import { ArrowLeft, Save } from 'lucide-react';
+import { useState } from 'react';
import { DatePicker } from '@/components/date-picker';
import InputError from '@/components/input-error';
import { PageHeader } from '@/components/page-header';
@@ -10,9 +14,6 @@ import { RadioGroup, RadioGroupItem } from '@/components/ui/radio-group';
import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select';
import { Textarea } from '@/components/ui/textarea';
import { index, update } from '@/routes/admin/users/students';
-import { Form, Head } from '@inertiajs/react';
-import { format } from 'date-fns';
-import { useState } from 'react';
type Department = { id: number; name: string };
type Lecturer = { id: number; lecturer_number: string; user: { profile: { full_name: string } | null } | null };
@@ -46,7 +47,10 @@ export default function StudentEdit({ user, departments, lecturers }: Props) {
title="Edit Mahasiswa"
actions={
- Kembali
+
+
+ Kembali
+
}
/>
@@ -216,6 +220,7 @@ export default function StudentEdit({ user, departments, lecturers }: Props) {
+
Simpan
diff --git a/resources/js/pages/admin/users/students/index.tsx b/resources/js/pages/admin/users/students/index.tsx
index 084f84e..04a3085 100644
--- a/resources/js/pages/admin/users/students/index.tsx
+++ b/resources/js/pages/admin/users/students/index.tsx
@@ -1,8 +1,8 @@
import { Head, router } from '@inertiajs/react';
-import { Plus } from 'lucide-react';
+import { Plus, RotateCcw } from 'lucide-react';
import { useState } from 'react';
-import type { PaginationState } from '@/components/data-table';
import { ConfirmDialog } from '@/components/confirm-dialog';
+import type { PaginationState } from '@/components/data-table';
import { DataTable } from '@/components/data-table';
import { DeleteConfirmDialog } from '@/components/delete-confirm-dialog';
import { PageHeader } from '@/components/page-header';
@@ -15,7 +15,8 @@ import {
reset_password,
index as studentsIndex,
} from '@/routes/admin/users/students';
-import { createStudentColumns, type Student } from './columns';
+import { createStudentColumns } from './columns';
+import type {Student} from './columns';
type Props = {
students: {
@@ -134,6 +135,7 @@ export default function StudentIndex({ students }: Props) {
: ''
}
confirmLabel="Reset"
+ confirmIcon={ }
variant="default"
onConfirm={handleResetPassword}
/>