diff --git a/resources/css/app.css b/resources/css/app.css index 1e5e0af..64167e9 100644 --- a/resources/css/app.css +++ b/resources/css/app.css @@ -167,6 +167,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/care/admin/members/index.blade.php b/resources/views/care/admin/members/index.blade.php index a455f81..e9e79d6 100644 --- a/resources/views/care/admin/members/index.blade.php +++ b/resources/views/care/admin/members/index.blade.php @@ -34,7 +34,7 @@ @if ($member->user_ref !== auth()->user()->public_id)
@csrf @method('DELETE') - + Remove
@endif diff --git a/resources/views/care/appointments/show.blade.php b/resources/views/care/appointments/show.blade.php index a49b659..1b6bc9a 100644 --- a/resources/views/care/appointments/show.blade.php +++ b/resources/views/care/appointments/show.blade.php @@ -16,7 +16,7 @@
@csrf - + No show
@endif @if ($canConsult && in_array($appointment->status, [\App\Models\Appointment::STATUS_WAITING, \App\Models\Appointment::STATUS_CHECKED_IN], true)) @@ -49,7 +49,7 @@ @if ($canManage && ! in_array($appointment->status, [\App\Models\Appointment::STATUS_COMPLETED, \App\Models\Appointment::STATUS_CANCELLED], true))
@csrf - + Cancel
@endif diff --git a/resources/views/care/bills/show.blade.php b/resources/views/care/bills/show.blade.php index ca5f4f3..343bb47 100644 --- a/resources/views/care/bills/show.blade.php +++ b/resources/views/care/bills/show.blade.php @@ -9,7 +9,7 @@
Print @if ($canManage && ! in_array($bill->status, [\App\Models\Bill::STATUS_PAID, \App\Models\Bill::STATUS_VOID])) -
@csrf
+
@csrfVoid
@endif
diff --git a/resources/views/care/patients/show.blade.php b/resources/views/care/patients/show.blade.php index db348ae..aa92cd5 100644 --- a/resources/views/care/patients/show.blade.php +++ b/resources/views/care/patients/show.blade.php @@ -17,7 +17,7 @@ Edit
@csrf @method('DELETE') - + Archive
@endif diff --git a/resources/views/care/prescriptions/show.blade.php b/resources/views/care/prescriptions/show.blade.php index 1b4c45d..862562e 100644 --- a/resources/views/care/prescriptions/show.blade.php +++ b/resources/views/care/prescriptions/show.blade.php @@ -13,7 +13,7 @@
@csrf
@endif @if ($canManage && ! in_array($prescription->status, [\App\Models\Prescription::STATUS_DISPENSED, \App\Models\Prescription::STATUS_CANCELLED])) -
@csrf
+
@csrfCancel
@endif 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 }} +
+