diff --git a/resources/js/pages/admin/manage/transaction/create.tsx b/resources/js/pages/admin/manage/transaction/create.tsx
index 5109bb3..d8a5882 100644
--- a/resources/js/pages/admin/manage/transaction/create.tsx
+++ b/resources/js/pages/admin/manage/transaction/create.tsx
@@ -43,6 +43,7 @@ import { store, index as transactionIndex } from '@/routes/admin/manage/transact
import { Form, Head, Link, usePage } from '@inertiajs/react';
import { ArrowLeft, Minus, Plus, ShoppingCart, Trash2 } from 'lucide-react';
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
+import { toast } from 'sonner';
import type { ProductForTransaction, TransactionCreateData } from './columns';
import { FieldDescription } from '@/components/ui/field';
@@ -314,6 +315,9 @@ export default function TransactionCreate({ data }: Props) {
...formData,
...getPayload(),
})}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
diff --git a/resources/js/pages/admin/manage/transaction/edit.tsx b/resources/js/pages/admin/manage/transaction/edit.tsx
index 5817f8e..bdbebfb 100644
--- a/resources/js/pages/admin/manage/transaction/edit.tsx
+++ b/resources/js/pages/admin/manage/transaction/edit.tsx
@@ -42,6 +42,7 @@ import { FieldDescription } from '@base-ui/react';
import { Form, Head, Link } from '@inertiajs/react';
import { ArrowLeft, Minus, Plus, ShoppingCart, Trash2 } from 'lucide-react';
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
+import { toast } from 'sonner';
import type { TransactionCreateData, TransactionForEdit } from './columns';
type CartLine = {
@@ -292,6 +293,9 @@ export default function TransactionEdit({ transaction, data }: Props) {
...formData,
...getPayload(),
})}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
diff --git a/resources/js/pages/admin/master/category/index.tsx b/resources/js/pages/admin/master/category/index.tsx
index 9d97b4d..1e1bfbf 100644
--- a/resources/js/pages/admin/master/category/index.tsx
+++ b/resources/js/pages/admin/master/category/index.tsx
@@ -1,6 +1,3 @@
-import { Form, Head, router } from '@inertiajs/react';
-import { Plus } from 'lucide-react';
-import { useState } from 'react';
import type { PaginationState } from '@/components/data-table';
import { DataTable } from '@/components/data-table';
import { DeleteConfirmDialog } from '@/components/delete-confirm-dialog';
@@ -13,13 +10,16 @@ import { Label } from '@/components/ui/label';
import { useCan } from '@/hooks/use-can';
import { useServerTable } from '@/hooks/use-server-table';
import {
- destroy,
index as categoryIndex,
+ destroy,
store,
update,
} from '@/routes/admin/master/categories';
-import { createCategoryColumns } from './columns';
+import { Head, router } from '@inertiajs/react';
+import { Plus } from 'lucide-react';
+import { useState } from 'react';
import type { Category } from './columns';
+import { createCategoryColumns } from './columns';
type Props = {
categories: {
diff --git a/resources/js/pages/admin/master/product/create.tsx b/resources/js/pages/admin/master/product/create.tsx
index 8b93581..0515e7e 100644
--- a/resources/js/pages/admin/master/product/create.tsx
+++ b/resources/js/pages/admin/master/product/create.tsx
@@ -8,6 +8,7 @@ import {
Trash2,
} from 'lucide-react';
import { useCallback, useRef, useState } from 'react';
+import { toast } from 'sonner';
import { ConfirmDialog } from '@/components/confirm-dialog';
import { FileUploadMultiple } from '@/components/file-upload-multiple';
import InputError from '@/components/input-error';
@@ -295,6 +296,9 @@ export default function ProductCreate({ categories }: Props) {
...data,
...getPayload(),
})}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/master/product/edit.tsx b/resources/js/pages/admin/master/product/edit.tsx
index 5f04fdd..eae48e0 100644
--- a/resources/js/pages/admin/master/product/edit.tsx
+++ b/resources/js/pages/admin/master/product/edit.tsx
@@ -8,6 +8,7 @@ import {
Trash2,
} from 'lucide-react';
import { useCallback, useRef, useState } from 'react';
+import { toast } from 'sonner';
import { ConfirmDialog } from '@/components/confirm-dialog';
import { FileUploadMultiple } from '@/components/file-upload-multiple';
import InputError from '@/components/input-error';
@@ -345,6 +346,9 @@ export default function ProductEdit({ product, categories }: Props) {
...data,
...getPayload(),
})}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/master/product/variant/edit.tsx b/resources/js/pages/admin/master/product/variant/edit.tsx
index 6ad9d01..dae7398 100644
--- a/resources/js/pages/admin/master/product/variant/edit.tsx
+++ b/resources/js/pages/admin/master/product/variant/edit.tsx
@@ -1,6 +1,7 @@
import { Form, Head, Link } from '@inertiajs/react';
import { ArrowLeft } from 'lucide-react';
import { useState } from 'react';
+import { toast } from 'sonner';
import { FileUploadMultiple } from '@/components/file-upload-multiple';
import InputError from '@/components/input-error';
import { NumberInput } from '@/components/number-input';
@@ -98,6 +99,9 @@ export default function ProductVariantEdit({ variant }: Props) {
action={`/admin/master/products/${variant.product_id}/variants/${variant.id}`}
method="put"
transform={() => getPayload()}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/master/product/variant/transfer-stock-dialog.tsx b/resources/js/pages/admin/master/product/variant/transfer-stock-dialog.tsx
index 466981a..e870a84 100644
--- a/resources/js/pages/admin/master/product/variant/transfer-stock-dialog.tsx
+++ b/resources/js/pages/admin/master/product/variant/transfer-stock-dialog.tsx
@@ -1,4 +1,5 @@
import { Form } from '@inertiajs/react';
+import { toast } from 'sonner';
import InputError from '@/components/input-error';
import { NumberInput } from '@/components/number-input';
import { Button } from '@/components/ui/button';
@@ -37,6 +38,9 @@ export function TransferStockDialog({
})}
resetOnSuccess
onSuccess={() => onOpenChange(false)}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/master/raw-material/create.tsx b/resources/js/pages/admin/master/raw-material/create.tsx
index 3b91396..3f4a4c8 100644
--- a/resources/js/pages/admin/master/raw-material/create.tsx
+++ b/resources/js/pages/admin/master/raw-material/create.tsx
@@ -8,6 +8,7 @@ import {
Trash2,
} from 'lucide-react';
import { useCallback, useRef, useState } from 'react';
+import { toast } from 'sonner';
import { ConfirmDialog } from '@/components/confirm-dialog';
import { FileUpload } from '@/components/file-upload';
import InputError from '@/components/input-error';
@@ -206,6 +207,9 @@ export default function RawMaterialCreate() {
...data,
...getPayload(),
})}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/master/raw-material/edit.tsx b/resources/js/pages/admin/master/raw-material/edit.tsx
index 2cfde79..5da91fe 100644
--- a/resources/js/pages/admin/master/raw-material/edit.tsx
+++ b/resources/js/pages/admin/master/raw-material/edit.tsx
@@ -8,6 +8,7 @@ import {
Trash2,
} from 'lucide-react';
import { useCallback, useRef, useState } from 'react';
+import { toast } from 'sonner';
import { ConfirmDialog } from '@/components/confirm-dialog';
import { FileUpload } from '@/components/file-upload';
import InputError from '@/components/input-error';
@@ -222,6 +223,9 @@ export default function RawMaterialEdit({ rawMaterial }: Props) {
...data,
...getPayload(),
})}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/master/raw-material/variant/edit.tsx b/resources/js/pages/admin/master/raw-material/variant/edit.tsx
index d746953..cb50b81 100644
--- a/resources/js/pages/admin/master/raw-material/variant/edit.tsx
+++ b/resources/js/pages/admin/master/raw-material/variant/edit.tsx
@@ -1,6 +1,7 @@
import { Form, Head, Link } from '@inertiajs/react';
import { ArrowLeft } from 'lucide-react';
import { useState } from 'react';
+import { toast } from 'sonner';
import { FileUpload } from '@/components/file-upload';
import InputError from '@/components/input-error';
import { NumberInput } from '@/components/number-input';
@@ -62,6 +63,9 @@ export default function RawMaterialVariantEdit({ variant }: Props) {
action={`/admin/master/raw-materials/${variant.raw_material_id}/variants/${variant.id}`}
method="put"
transform={() => getPayload()}
+ onError={() => {
+ toast.error('Terjadi kesalahan saat menyimpan data. Silakan periksa kembali input Anda.');
+ }}
>
{({ errors, processing }) => (
<>
diff --git a/resources/js/pages/admin/roles/create.tsx b/resources/js/pages/admin/roles/create.tsx
index 5d0f477..79b15e1 100644
--- a/resources/js/pages/admin/roles/create.tsx
+++ b/resources/js/pages/admin/roles/create.tsx
@@ -1,5 +1,6 @@
import { Form, Head, Link } from '@inertiajs/react';
import { ArrowLeft } from 'lucide-react';
+import { toast } from 'sonner';
import InputError from '@/components/input-error';
import { Button } from '@/components/ui/button';
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card';
@@ -77,7 +78,12 @@ export default function RoleCreate({ permissions }: Props) {
-