41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
| <?php
 | |
| 
 | |
| namespace App\View\Ui;
 | |
| 
 | |
| use Illuminate\View\Component;
 | |
| 
 | |
| class BooleanDisplay extends Component
 | |
| {
 | |
| 
 | |
|     public function __construct(
 | |
|         public bool $value,
 | |
|         public string $hint,
 | |
|         public string $right,
 | |
|         public string $wrong,
 | |
|         public bool $dark = false,
 | |
|     ) {
 | |
|     }
 | |
| 
 | |
|     public function spriteClass(): string
 | |
|     {
 | |
|         return $this->value ? 'text-green-800 group-[.dark]:text-green-600' : 'text-red-800 group-[.dark]:text-red-600';
 | |
|     }
 | |
| 
 | |
|     public function render()
 | |
|     {
 | |
|         return <<<'HTML'
 | |
|             <div x-tooltip.raw="{{$hint}}" class="flex space-x-2 items-center group @if($dark) dark @endif">
 | |
|                 <div class="border-2 rounded-full w-5 h-5 flex items-center justify-center
 | |
|                     @if ($value) border-green-700 group-[.dark]:border-green-500
 | |
|                     @else border-red-700 group-[.dark]:border-red-500
 | |
|                     @endif
 | |
|                     "
 | |
|                 >
 | |
|                     <x-ui::sprite :src="$value ? 'check ' :'close'" class="w-3 h-3 flex-none {{$spriteClass}}"></x-ui::sprite>
 | |
|                 </div>
 | |
|                 <div class="text-gray-400 text-xs">{{ $value ? $right : $wrong }}</div>
 | |
|             </div>
 | |
|         HTML;
 | |
|     }
 | |
| }
 |