75 lines
3.7 KiB
PHP
75 lines
3.7 KiB
PHP
@props([
|
|
'label' => 'Badge colour',
|
|
'model',
|
|
'options' => [],
|
|
])
|
|
|
|
@php
|
|
$currentValue = data_get($this, $model, 'gray');
|
|
$currentHex = \Modules\Helpdesk\Support\Color::css($currentValue);
|
|
$currentText = \Modules\Helpdesk\Support\Color::text($currentValue);
|
|
$currentLabel = \Modules\Helpdesk\Support\Color::label($currentValue);
|
|
@endphp
|
|
|
|
<div {{ $attributes->class('rounded-2xl border border-zinc-200 bg-white/70 p-4 shadow-sm dark:border-zinc-700 dark:bg-zinc-950/50') }}>
|
|
<div class="flex flex-col gap-4 sm:flex-row sm:items-start sm:justify-between">
|
|
<div class="min-w-0 flex-1 space-y-3">
|
|
<label class="block text-sm font-semibold text-zinc-800 dark:text-zinc-100">
|
|
{{ $label }}
|
|
</label>
|
|
|
|
<select
|
|
wire:model.live="{{ $model }}"
|
|
class="h-11 w-full rounded-xl border border-zinc-300 bg-white px-3 text-sm font-semibold text-zinc-900 shadow-sm outline-none transition-colors duration-150 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/30 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100"
|
|
>
|
|
@foreach ($options as $key => $option)
|
|
<option value="{{ $key }}" style="color: {{ $option['hex'] }};">
|
|
● {{ $option['name'] }} — {{ $option['hex'] }}
|
|
</option>
|
|
@endforeach
|
|
</select>
|
|
|
|
<div class="flex flex-wrap items-center gap-2" aria-label="Available Helpdesk colours">
|
|
@foreach ($options as $key => $option)
|
|
<button
|
|
type="button"
|
|
wire:click="$set('{{ $model }}', '{{ $key }}')"
|
|
title="{{ $option['name'] }} {{ $option['hex'] }}"
|
|
class="inline-flex h-7 w-7 items-center justify-center rounded-full border border-white/80 shadow-sm ring-1 ring-zinc-900/10 transition hover:scale-105 focus:outline-none focus:ring-2 focus:ring-blue-500/40 dark:ring-white/15"
|
|
style="background-color: {{ $option['hex'] }}"
|
|
>
|
|
<span class="sr-only">Use {{ $option['name'] }}</span>
|
|
</button>
|
|
@endforeach
|
|
</div>
|
|
</div>
|
|
|
|
<div class="flex w-full flex-col gap-3 sm:w-44 sm:items-stretch">
|
|
<span
|
|
class="inline-flex h-11 items-center justify-center rounded-xl px-4 text-sm font-bold shadow-sm ring-1 ring-zinc-900/10 dark:ring-white/10"
|
|
style="background-color: {{ $currentHex }}; color: {{ $currentText }};"
|
|
>
|
|
{{ $currentLabel }}
|
|
</span>
|
|
|
|
<div class="grid grid-cols-[3.5rem_minmax(0,1fr)] items-center gap-2">
|
|
<input
|
|
type="color"
|
|
value="{{ $currentHex }}"
|
|
wire:change="$set('{{ $model }}', $event.target.value)"
|
|
class="h-10 w-14 cursor-pointer rounded-xl border border-zinc-300 bg-white p-1 shadow-sm dark:border-zinc-700 dark:bg-zinc-900"
|
|
aria-label="Choose a custom hex colour"
|
|
/>
|
|
|
|
<input
|
|
type="text"
|
|
wire:model.live.debounce.500ms="{{ $model }}"
|
|
class="h-10 w-full rounded-xl border border-zinc-300 bg-white px-3 text-sm text-zinc-900 placeholder:text-zinc-400 shadow-sm outline-none transition-colors duration-150 focus:border-blue-500 focus:ring-2 focus:ring-blue-500/30 dark:border-zinc-700 dark:bg-zinc-900 dark:text-zinc-100 dark:placeholder:text-zinc-500"
|
|
placeholder="#ffffff"
|
|
aria-label="Custom hex colour"
|
|
/>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|