@php $style = \App\Support\Qr\QrStyleDefaults::merge($style ?? null); $moduleStyles = $moduleStyles ?? \App\Support\Qr\QrModuleStyleCatalog::visible(); $cornerOuterStyles = $cornerOuterStyles ?? \App\Support\Qr\QrCornerStyleCatalog::outerStyles(); $cornerInnerStyles = $cornerInnerStyles ?? \App\Support\Qr\QrCornerStyleCatalog::innerStyles(); $frameStyles = $frameStyles ?? \App\Support\Qr\QrFrameStyleCatalog::visible(); $qrBits = [1,0,1,0,1, 0,1,1,0,0, 1,1,0,1,1, 0,0,1,0,1, 1,0,1,1,0]; @endphp @include('qr-codes.partials.qr-customizer-script') {{-- ── Quick style presets ──────────────────────────────────────────── --}}

Quick styles

@foreach([ [ 'key' => 'classic', 'label' => 'Classic', 'fg' => '#000000', 'bg' => '#ffffff', 'outer' => 'square', 'inner' => 'square', 'dot' => false, ], [ 'key' => 'rounded', 'label' => 'Rounded', 'fg' => '#111827', 'bg' => '#ffffff', 'outer' => 'rounded', 'inner' => 'square', 'dot' => false, ], [ 'key' => 'branded', 'label' => 'Branded', 'fg' => '#1d4ed8', 'bg' => '#ffffff', 'outer' => 'rounded', 'inner' => 'square', 'dot' => false, ], [ 'key' => 'dots', 'label' => 'Dots', 'fg' => '#0f172a', 'bg' => '#ffffff', 'outer' => 'square', 'inner' => 'dot', 'dot' => true, ], ] as $preset) @php $outerRadius = match($preset['outer']) { 'rounded' => '3px', 'circle' => '50%', default => '1px' }; $innerRadius = $preset['inner'] === 'dot' ? '50%' : '1px'; $dotRadius = $preset['dot'] ? '50%' : '1px'; @endphp @endforeach
{{-- Pill tab nav --}}
@foreach([ ['id' => 'body', 'label' => 'Body'], ['id' => 'colors', 'label' => 'Colors'], ['id' => 'eyes', 'label' => 'Eyes'], ['id' => 'logo', 'label' => 'Logo'], ['id' => 'frame', 'label' => 'Frame'], ] as $tab) @endforeach
{{-- ── Body ─────────────────────────────────────────────────────── --}}

Dot shape

@foreach($moduleStyles as $key => $meta) @endforeach
{{-- ── Colors ───────────────────────────────────────────────────── --}}

Quick presets

@foreach([ ['fg' => '#000000', 'bg' => '#ffffff', 'label' => 'Classic'], ['fg' => '#1d4ed8', 'bg' => '#ffffff', 'label' => 'Blue'], ['fg' => '#047857', 'bg' => '#ffffff', 'label' => 'Green'], ['fg' => '#7c3aed', 'bg' => '#ffffff', 'label' => 'Purple'], ['fg' => '#c2410c', 'bg' => '#fff7ed', 'label' => 'Orange'], ['fg' => '#be185d', 'bg' => '#fdf4ff', 'label' => 'Pink'], ['fg' => '#0f172a', 'bg' => '#ecfdf5', 'label' => 'Dark teal'], ] as $preset) @endforeach

Gradient

@foreach([['none', 'None'], ['linear', 'Linear'], ['radial', 'Radial']] as [$val, $lbl]) @endforeach
{{-- ── Eyes ─────────────────────────────────────────────────────── --}}

Outer frame

@foreach([ ['value' => 'square', 'label' => 'Square', 'shape' => 'h-7 w-7 border-[3px] border-slate-800'], ['value' => 'rounded', 'label' => 'Rounded', 'shape' => 'h-7 w-7 rounded-[5px] border-[3px] border-slate-800'], ['value' => 'circle', 'label' => 'Circle', 'shape' => 'h-7 w-7 rounded-full border-[3px] border-slate-800'], ] as $opt) @endforeach

Inner dot

@foreach([ ['value' => 'square', 'label' => 'Square', 'shape' => 'h-5 w-5 rounded-[2px] bg-slate-800'], ['value' => 'rounded', 'label' => 'Rounded', 'shape' => 'h-5 w-5 rounded-[4px] bg-slate-800'], ['value' => 'dot', 'label' => 'Dot', 'shape' => 'h-5 w-5 rounded-full bg-slate-800'], ] as $opt) @endforeach
{{-- ── Logo ─────────────────────────────────────────────────────── --}}

Center logo

Placed in the center. Error correction is raised automatically when a logo is present.

{{-- Logo options: shown when a logo is present (uploaded or existing) --}}
{{-- Size --}}
{{-- Padding --}}
{{-- White background toggle --}}
White background
{{-- Shape --}}

Shape

{{-- Original: landscape rectangle — logo keeps its natural aspect ratio --}} {{-- Rounded: square crop with rounded corners --}} {{-- Circle: square crop clipped to circle --}}
@if(!empty($showRemoveLogo)) @endif
{{-- ── Frame ────────────────────────────────────────────────────── --}}

Frame style

@foreach($frameStyles as $key => $meta) @endforeach
{{-- Frame colour --}}
{{-- Frame text -- only for frames that show a CTA label --}}