// resources/js/Components/Modals/NewRoomModal.tsx import React, { useState } from 'react'; import axios from 'axios'; import { toast } from 'react-hot-toast'; interface Props { onClose: () => void; onSaved: () => void; } export default function NewRoomModal({ onClose, onSaved }: Props) { const [form, setForm] = useState({ room_symbol: '', room_name: '', lines: 1, racks_per_line: 1, shelves_per_rack: 1, positions_per_shelf: 1, }); const [loading, setLoading] = useState(false); const handleChange = (e: React.ChangeEvent) => setForm({ ...form, [e.target.name]: e.target.type === 'number' ? parseInt(e.target.value) : e.target.value }); const save = async () => { setLoading(true); const id = toast.loading('Creating room…'); try { await axios.post('/api/stock-rooms', form, { withCredentials: true }); toast.dismiss(id); toast.success('Room created!'); onSaved(); } catch (err: any) { toast.dismiss(id); toast.error(err.response?.data?.message || 'Error creating room'); } finally { setLoading(false); } }; return (

New Room

{['room_symbol','room_name'].map((field) => (
))} {['lines','racks_per_line','shelves_per_rack','positions_per_shelf'].map((field) => (
))}
); }