feat(products): name is also editable

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Hardik 2026-05-31 06:18:47 +05:30
parent 7b498a91f8
commit 2c364f95e5
2 changed files with 5 additions and 4 deletions

View file

@ -46,9 +46,11 @@ export async function updateProduct(formData: FormData): Promise<ActionResult> {
const parsed = z.object({
code: z.string().min(1).max(50),
name: z.string().min(1).max(200),
description: z.string().optional(),
}).safeParse({
code: formData.get("code"),
name: formData.get("name"),
description: formData.get("description") || undefined,
});
if (!parsed.success) return { error: parsed.error.errors[0].message };

View file

@ -23,10 +23,9 @@ function ProductFormFields({ product }: { product?: ProductRow }) {
placeholder="e.g. FUEL-OIL-001" />
</div>
<div>
<label className="block text-xs font-medium text-neutral-700 mb-1">Name</label>
<input name="name" defaultValue={product?.name} required disabled={!!product}
className="w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20 disabled:bg-neutral-50 disabled:text-neutral-400" />
{product && <p className="mt-1 text-xs text-neutral-400">Name is locked after creation.</p>}
<label className="block text-xs font-medium text-neutral-700 mb-1">Name *</label>
<input name="name" defaultValue={product?.name} required
className="w-full rounded-lg border border-neutral-300 px-3 py-2 text-sm focus:border-primary-500 focus:outline-none focus:ring-2 focus:ring-primary-500/20" />
</div>
<div>
<label className="block text-xs font-medium text-neutral-700 mb-1">Description</label>