From cfef8bee067976763c28aa5ee16a22ecbedab8aa Mon Sep 17 00:00:00 2001 From: isaacclad Date: Thu, 9 Jul 2026 06:38:09 +0000 Subject: [PATCH] Replace ghost action links with shared btn components in Queue. Aligns kiosk, appointment, queue, and admin destructive actions with the Frontdesk pill-button pattern. Co-authored-by: Cursor --- resources/css/app.css | 113 ++++++++++++++++++ resources/views/components/btn.blade.php | 34 ++++++ .../views/components/danger-zone.blade.php | 12 ++ .../views/qms/admin/members/index.blade.php | 2 +- .../views/qms/appointments/index.blade.php | 10 +- resources/views/qms/devices/index.blade.php | 20 ++-- resources/views/qms/displays/index.blade.php | 2 +- resources/views/qms/mobile/show.blade.php | 2 +- resources/views/qms/queues/index.blade.php | 8 +- resources/views/qms/rules/index.blade.php | 2 +- .../views/qms/workflows/create.blade.php | 2 +- resources/views/qms/workflows/edit.blade.php | 2 +- 12 files changed, 186 insertions(+), 23 deletions(-) create mode 100644 resources/views/components/btn.blade.php create mode 100644 resources/views/components/danger-zone.blade.php diff --git a/resources/css/app.css b/resources/css/app.css index 76807c0..9e73e90 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -174,6 +174,119 @@ html.qr-mobile-page body { pointer-events: none; } + .btn-warning { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + border-radius: 9999px; + border: 1px solid rgb(252 211 77); + background-color: #fff; + padding: 0.5rem 1rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 600; + color: rgb(180 83 9); + box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + transition: background-color 0.15s ease, border-color 0.15s ease; + } + + .btn-warning:hover { + background-color: rgb(255 251 235); + border-color: rgb(245 158 11); + } + + .btn-warning:disabled { + opacity: 0.6; + pointer-events: none; + } + + .btn-danger { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + border-radius: 9999px; + border: 1px solid rgb(254 202 202); + background-color: #fff; + padding: 0.5rem 1rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 600; + color: rgb(185 28 28); + box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); + transition: background-color 0.15s ease, border-color 0.15s ease; + } + + .btn-danger:hover { + background-color: rgb(254 242 242); + border-color: rgb(252 165 165); + } + + .btn-danger:disabled { + opacity: 0.6; + pointer-events: none; + } + + .btn-danger-plain { + padding: 0; + border: none; + background: transparent; + border-radius: 0; + box-shadow: none; + font-weight: 500; + } + + .btn-danger-plain:hover { + background: transparent; + text-decoration: underline; + } + + .btn-link { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.375rem; + border-radius: 9999px; + border: 1px solid transparent; + background-color: transparent; + padding: 0.5rem 0.75rem; + font-size: 0.875rem; + line-height: 1.25rem; + font-weight: 600; + color: rgb(67 56 202); + transition: background-color 0.15s ease, color 0.15s ease; + } + + .btn-link:hover { + background-color: rgb(238 242 255); + color: rgb(55 48 163); + } + + .btn-link:disabled { + opacity: 0.6; + pointer-events: none; + } + + .btn-link-plain { + padding: 0; + border: none; + background: transparent; + border-radius: 0; + font-weight: 500; + } + + .btn-link-plain:hover { + background: transparent; + text-decoration: underline; + } + + .btn-sm { + padding: 0.25rem 0.625rem; + font-size: 0.75rem; + line-height: 1rem; + } + .btn-group { display: flex; flex-wrap: wrap; diff --git a/resources/views/components/btn.blade.php b/resources/views/components/btn.blade.php new file mode 100644 index 0000000..ca40175 --- /dev/null +++ b/resources/views/components/btn.blade.php @@ -0,0 +1,34 @@ +@props([ + 'variant' => 'primary', + 'href' => null, + 'type' => 'button', + 'size' => null, + 'plain' => false, +]) + +@php + $tag = $href ? 'a' : 'button'; + + $variantClass = match ($variant) { + 'secondary' => 'btn-secondary', + 'warning' => 'btn-warning', + 'danger' => 'btn-danger', + 'link' => 'btn-link', + default => 'btn-primary', + }; + + $classes = collect([ + $variantClass, + $size === 'sm' ? 'btn-sm' : null, + ($plain && $variant === 'link') ? 'btn-link-plain' : null, + ($plain && $variant === 'danger') ? 'btn-danger-plain' : null, + ])->filter()->implode(' '); +@endphp + +<{{ $tag }} + @if ($href) href="{{ $href }}" @endif + @if ($tag === 'button') type="{{ $type }}" @endif + {{ $attributes->class([$classes]) }} +> + {{ $slot }} + diff --git a/resources/views/components/danger-zone.blade.php b/resources/views/components/danger-zone.blade.php new file mode 100644 index 0000000..c24603b --- /dev/null +++ b/resources/views/components/danger-zone.blade.php @@ -0,0 +1,12 @@ +@props([ + 'title' => null, +]) + +
class(['mt-6 space-y-3 rounded-2xl border border-slate-200 bg-slate-50/80 p-4']) }}> + @if ($title) +

{{ $title }}

+ @endif +
+ {{ $slot }} +
+
diff --git a/resources/views/qms/admin/members/index.blade.php b/resources/views/qms/admin/members/index.blade.php index 014e5e1..83ec6ae 100644 --- a/resources/views/qms/admin/members/index.blade.php +++ b/resources/views/qms/admin/members/index.blade.php @@ -46,7 +46,7 @@ {{ $member->branch?->name ?? 'All' }} @if ($member->user_ref !== auth()->user()->public_id) -
@csrf @method('DELETE')
+
@csrf @method('DELETE')Remove
@endif diff --git a/resources/views/qms/appointments/index.blade.php b/resources/views/qms/appointments/index.blade.php index e131481..c0c9b53 100644 --- a/resources/views/qms/appointments/index.blade.php +++ b/resources/views/qms/appointments/index.blade.php @@ -45,11 +45,13 @@ {{ str_replace('_', ' ', $appointment->status) }} @if ($appointment->status === 'scheduled') - Edit -
@csrf
-
@csrf
+
+ Edit +
@csrfCheck in
+
@csrfCancel
+
@elseif ($appointment->ticket) - View ticket + View ticket @endif diff --git a/resources/views/qms/devices/index.blade.php b/resources/views/qms/devices/index.blade.php index 48c24e2..f011dac 100644 --- a/resources/views/qms/devices/index.blade.php +++ b/resources/views/qms/devices/index.blade.php @@ -60,15 +60,17 @@ {{ $device->branch?->name ?? '—' }} - @if ($device->type === 'kiosk' && $device->device_token) - Open kiosk - @endif - @if ($canManage) -
- @csrf - -
- @endif +
+ @if ($device->type === 'kiosk' && $device->device_token) + Open kiosk + @endif + @if ($canManage) +
+ @csrf + Regenerate token +
+ @endif +
@endforeach diff --git a/resources/views/qms/displays/index.blade.php b/resources/views/qms/displays/index.blade.php index 24fadf7..07153b4 100644 --- a/resources/views/qms/displays/index.blade.php +++ b/resources/views/qms/displays/index.blade.php @@ -52,7 +52,7 @@ {{ config('qms.display_layouts.'.$screen->layout, $screen->layout) }} {{ $screen->branch?->name ?? '—' }} - Open display + Open display @endforeach diff --git a/resources/views/qms/mobile/show.blade.php b/resources/views/qms/mobile/show.blade.php index 4b19c69..54277b5 100644 --- a/resources/views/qms/mobile/show.blade.php +++ b/resources/views/qms/mobile/show.blade.php @@ -30,7 +30,7 @@
@csrf - + Cancel ticket
@endif diff --git a/resources/views/qms/queues/index.blade.php b/resources/views/qms/queues/index.blade.php index f28e303..0ebf8fa 100644 --- a/resources/views/qms/queues/index.blade.php +++ b/resources/views/qms/queues/index.blade.php @@ -59,13 +59,13 @@ {{ $queue->prefix }} {{ config('qms.queue_strategies.'.$queue->strategy, $queue->strategy) }} -
+
@if ($queue->is_paused) Paused -
@csrf
+
@csrfResume
@elseif ($queue->is_active) Active -
@csrf
+
@csrfPause
@else Inactive @endif @@ -73,7 +73,7 @@ @if(app(\App\Services\Qms\QmsPermissions::class)->can(app(\App\Services\Qms\OrganizationResolver::class)->memberFor(auth()->user()), 'rules.view')) - Rules + Rules @endif diff --git a/resources/views/qms/rules/index.blade.php b/resources/views/qms/rules/index.blade.php index c64e138..3618143 100644 --- a/resources/views/qms/rules/index.blade.php +++ b/resources/views/qms/rules/index.blade.php @@ -56,7 +56,7 @@ {{ json_encode($rule->conditions) }} {{ json_encode($rule->actions) }} -
@csrf @method('DELETE')
+
@csrf @method('DELETE')Remove
@empty diff --git a/resources/views/qms/workflows/create.blade.php b/resources/views/qms/workflows/create.blade.php index 8a38982..36daece 100644 --- a/resources/views/qms/workflows/create.blade.php +++ b/resources/views/qms/workflows/create.blade.php @@ -30,7 +30,7 @@

Steps

- + Add step
- + Add step