Renamed and reorganized Livewire components, namespaces, and views for improved file structure and clarity. Introduced filaments.show and filaments.edit routes. Updated database migrations and navigation routes accordingly. Upgraded dependencies in composer.

This commit is contained in:
2025-12-13 03:10:31 +01:00
parent 85b97ed3b1
commit 7e79d1d034
35 changed files with 1319 additions and 736 deletions
@@ -0,0 +1,144 @@
<section>
<x-header>
{{ __('Buildplates') }}
<x-slot name="headerleft">
<input type="text" placeholder="Search..." wire:model.live="search" class="bg-jet-700 border-jet-500 rounded text-jet-50 placeholder:text-jet-200 focus:border-olivine focus:ring-olivine" />
</x-slot>
<x-slot name="headerright">
<flux:modal.trigger name="createModal">
<flux:button variant="primary" class="bg-olivine hover:bg-olivine-600">Create Buildplate</flux:button>
</flux:modal.trigger>
</x-slot>
</x-header>
<div class="container m-auto my-8 bg-jet-800 rounded-lg shadow p-6 text-jet-50">
<x-table>
<x-slot name="tableheader">
<x-table.header>Name</x-table.header>
<x-table.header>Description</x-table.header>
<x-table.header>Manufacturer</x-table.header>
<x-table.header>Max Temp.</x-table.header>
<x-table.header>Amount</x-table.header>
<x-table.header></x-table.header>
<x-table.header class="w-1/6"></x-table.header>
</x-slot>
@foreach ($buildplates as $buildplate)
<tr wire:key="{{ $buildplate->id }}" class="text-jet-200 border-b border-jet-600 hover:bg-jet-700 transition duration-150 ease-in-out">
<x-table.item><p class="p-4 px-3 pl-6 font-bold">{{ $buildplate->name }}</p></x-table.item>
<x-table.item><p class="p-4 px-3">{{ $buildplate->description }}</p></x-table.item>
<x-table.item><p class="p-4 px-3">{{ App\Models\Manufacturer::find($buildplate->manufacturer_id)->name }}</p></x-table.item>
<x-table.item><p class="p-4 px-3 text-left">{{ $buildplate->temp_max }}</p></x-table.item>
<x-table.item><p class="p-4 px-3 text-left">{{ $buildplate->amount }}</p></x-table.item>
<x-table.item><p class="p-4 px-3"></p></x-table.item>
<x-table.item>
<div class="flex flex-row gap-4 justify-end pr-8">
<flux:button variant="ghost" wire:click="edit({{ $buildplate->id }})" icon="pencil">Edit</flux:button>
<flux:button variant="danger" wire:click="deleteModal({{ $buildplate->id }})" icon="x-mark">Delete</flux:button>
</div>
</x-table.item>
</tr>
@endforeach
<x-slot name="pagination">
{{ $buildplates->links() }}
</x-slot>
</x-table>
</div>
<!-- Create Form -->
<flux:modal wire:model.self='createModal' name="createModal" class="md:w-lg">
<form wire:submit.prevent="create">
<div class="space-y-6">
<div>
<flux:heading size="lg" class="text-nuke-400">Create buildplate</flux:heading>
<flux:text class="mt-2">Create a new buildplate.</flux:text>
</div>
<flux:input label="Name" wire:model="name" placeholder="Buildplate Name" required />
<flux:textarea label="Description" wire:model="description" placeholder="Description" />
<flux:select wire:model="manufacturer_id" label="Manufacturer">
<flux:select.option disabled value="">Choose Manufacturer</flux:select.option>
@foreach ($manufacturers as $manufacturer)
<flux:select.option wire:key="{{ $manufacturer->id }}" value="{{ $manufacturer->id }}">{{ $manufacturer->name }}</flux:select.option>
@endforeach
</flux:select>
<div class="grid grid-cols-2 gap-x-4 gap-y-6">
<flux:input label="Temperature" wire:model="temp_max" placeholder="Temperature" required />
<flux:input label="Amount" wire:model="amount" placeholder="Amount" required />
</div>
<div class="flex gap-2">
<flux:spacer />
<flux:button variant="ghost" wire:click='cancel'>Cancel</flux:button>
<flux:button type="submit" variant="primary" class="bg-nuke-400 hover:bg-nuke-500">Create</flux:button>
</div>
</div>
</form>
</flux:modal>
<!-- Edit Form -->
@empty($buildplate)
@else
<flux:modal wire:model.self='editModal' name="editModal" class="md:w-lg">
<form wire:submit.prevent="save({{ $editid }})">
<div class="space-y-6">
<div>
<flux:heading size="lg" class="text-etheral-300">Edit buildplate</flux:heading>
<flux:text class="mt-2">Edit an existing buildplate.</flux:text>
</div>
<flux:input label="Name" wire:model="name" placeholder="Buildplate Name" required />
<flux:textarea label="Description" wire:model="description" placeholder="Description" />
<flux:select wire:model="manufacturer_id" label="Manufacturer">
<flux:select.option disabled value="">Choose Manufacturer</flux:select.option>
@foreach ($manufacturers as $manufacturer)
<flux:select.option wire:key="{{ $manufacturer->id }}" value="{{ $manufacturer->id }}">{{ $manufacturer->name }}</flux:select.option>
@endforeach
</flux:select>
<div class="grid grid-cols-2 gap-x-4 gap-y-6">
<flux:input label="Temperature" wire:model="temp_max" placeholder="Temperature" required />
<flux:input label="Amount" wire:model="amount" placeholder="Amount" required />
</div>
<div class="flex gap-2">
<flux:spacer />
<flux:button variant="ghost" wire:click='cancel'>Cancel</flux:button>
<flux:button type="submit" variant="primary" class="bg-etheral-300 hover:bg-etheral-400">Save</flux:button>
</div>
</div>
</form>
</flux:modal>
@endempty
<!-- Delete Form -->
<flux:modal wire:model.self='deleteModal' name="deleteModal" class="md:w-lg">
<form wire:submit.prevent="delete({{ $deleteid }})">
<div class="space-y-6">
<div>
<flux:heading size="lg" class="text-red-500">Delete buildplate?</flux:heading>
<flux:text class="mt-2">
<p>You're about to delete this buildplate.</p>
<p>This action cannot be reversed.</p>
</flux:text>
</div>
<flux:input label="Name" wire:model="name" disabled placeholder="Buildplate Name" required />
<flux:textarea label="Description" wire:model="description" disabled placeholder="Description" />
<flux:select wire:model="manufacturer_id" disabled label="Manufacturer">
<flux:select.option disabled value="">Choose Manufacturer</flux:select.option>
@foreach ($manufacturers as $manufacturer)
<flux:select.option wire:key="{{ $manufacturer->id }}" value="{{ $manufacturer->id }}">{{ $manufacturer->name }}</flux:select.option>
@endforeach
</flux:select>
<div class="grid grid-cols-2 gap-x-4 gap-y-6">
<flux:input label="Temperature" wire:model="temp_max" disabled placeholder="Temperature" required />
<flux:input label="Amount" wire:model="amount" disabled placeholder="Amount" required />
</div>
<div class="flex gap-2">
<flux:spacer />
<flux:button variant="ghost" wire:click='cancel'>Cancel</flux:button>
<flux:button type="submit" variant="danger">Delete Buildplate</flux:button>
</div>
</div>
</form>
</flux:modal>
</section>