62 lines
4.1 KiB
PHP
62 lines
4.1 KiB
PHP
<div>
|
|
@php $ws = current_workspace(); @endphp
|
|
<div class="flex items-center justify-between mb-6">
|
|
<h1 class="text-2xl font-semibold text-t1">QR Codes</h1>
|
|
@if($ws)
|
|
<button
|
|
@click="$dispatch('openModal', {component: 'modals.create-qr-code', arguments: {workspaceUlid: '{{ $ws->ulid }}'}})"
|
|
class="px-4 py-2 bg-accent-gradient text-white rounded-lg text-sm font-medium hover:opacity-90 transition-opacity">
|
|
+ Create QR Code
|
|
</button>
|
|
@endif
|
|
</div>
|
|
|
|
<div class="bg-s1 border border-white/[.06] rounded-xl overflow-hidden">
|
|
@forelse($qrCodes as $qr)
|
|
<div class="flex items-center gap-4 px-5 py-4 border-b border-white/[.04] group hover:bg-white/[.02] transition-colors">
|
|
<div class="w-10 h-10 bg-s2 rounded-lg flex items-center justify-center flex-shrink-0">
|
|
<svg class="w-5 h-5 text-t3" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 013.75 9.375v-4.5zM3.75 14.625c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5a1.125 1.125 0 01-1.125-1.125v-4.5zM13.5 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0113.5 9.375v-4.5z"/>
|
|
</svg>
|
|
</div>
|
|
<div class="flex-1 min-w-0">
|
|
<div class="text-sm font-medium text-t1">{{ $qr->label ?: $qr->ulid }}</div>
|
|
<div class="text-xs text-t2 truncate">{{ $qr->type }} · {{ $qr->payload['url'] ?? '' }}</div>
|
|
</div>
|
|
<span class="text-xs px-2 py-0.5 rounded-full {{ $qr->is_dynamic ? 'bg-blue/10 text-blue' : 'bg-white/[.06] text-t3' }}">
|
|
{{ $qr->is_dynamic ? 'Dynamic' : 'Static' }}
|
|
</span>
|
|
<div class="flex items-center gap-3 opacity-0 group-hover:opacity-100 transition-opacity">
|
|
<button
|
|
@click="$dispatch('openModal', {component: 'modals.edit-qr-code', arguments: {qrUlid: '{{ $qr->ulid }}'}})"
|
|
class="text-t2 text-xs hover:text-t1">Edit</button>
|
|
<button
|
|
@click="$dispatch('openModal', {component: 'modals.delete-qr-code', arguments: {qrUlid: '{{ $qr->ulid }}'}})"
|
|
class="text-red text-xs hover:opacity-80">Delete</button>
|
|
</div>
|
|
</div>
|
|
@empty
|
|
<div class="p-12 text-center">
|
|
<div class="w-16 h-16 bg-s2 rounded-2xl flex items-center justify-center mx-auto mb-4">
|
|
<svg class="w-8 h-8 text-t3" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="1.5">
|
|
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 013.75 9.375v-4.5zM3.75 14.625c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5a1.125 1.125 0 01-1.125-1.125v-4.5zM13.5 4.875c0-.621.504-1.125 1.125-1.125h4.5c.621 0 1.125.504 1.125 1.125v4.5c0 .621-.504 1.125-1.125 1.125h-4.5A1.125 1.125 0 0113.5 9.375v-4.5z"/>
|
|
</svg>
|
|
</div>
|
|
<h3 class="text-lg font-medium text-t1 mb-2">No QR Codes yet</h3>
|
|
<p class="text-sm text-t2 mb-6">Create QR codes for URLs, vCards, WiFi and more.</p>
|
|
@if($ws)
|
|
<button
|
|
@click="$dispatch('openModal', {component: 'modals.create-qr-code', arguments: {workspaceUlid: '{{ $ws->ulid }}'}})"
|
|
class="px-4 py-2.5 bg-accent-gradient text-white rounded-lg text-sm font-medium hover:opacity-90 transition-opacity">
|
|
Create your first QR Code
|
|
</button>
|
|
@endif
|
|
</div>
|
|
@endforelse
|
|
</div>
|
|
|
|
@if($qrCodes->hasPages())
|
|
<div class="mt-4">{{ $qrCodes->links() }}</div>
|
|
@endif
|
|
</div>
|