@php $fonTajuk = $invitation->fon_tajuk ?? 'Cormorant Garamond'; $fonBadan = $invitation->fon_badan ?? 'DM Sans'; function hexBrightness(string $hex): float { $hex = ltrim($hex, '#'); if (strlen($hex) === 3) { $hex = $hex[0].$hex[0].$hex[1].$hex[1].$hex[2].$hex[2]; } [$r, $g, $b] = array_map('hexdec', str_split($hex, 2)); return 0.299 * $r + 0.587 * $g + 0.114 * $b; } $themeColors = [ 'emas-klasik' => ['bg'=>'#0F0B06','bg2'=>'#1A1208','accent'=>'#C9A96E','light'=>'#E8D5B0','dark'=>false], 'hijau-sage' => ['bg'=>'#081410','bg2'=>'#0D1F1A','accent'=>'#8DB8A8','light'=>'#B8D4C4','dark'=>false], 'ros-lembut' => ['bg'=>'#100810','bg2'=>'#1A0D14','accent'=>'#D4829A','light'=>'#E8B4C8','dark'=>false], 'biru-sendu' => ['bg'=>'#080D14','bg2'=>'#0D1525','accent'=>'#7A9EC8','light'=>'#A4C3E8','dark'=>false], 'krim-coklat' => ['bg'=>'#F0E8D8','bg2'=>'#E8DCC8','accent'=>'#8B6914','light'=>'#6B4E10','dark'=>true], 'hitam-putih' => ['bg'=>'#141414','bg2'=>'#1A1A1A','accent'=>'#C8C8C8','light'=>'#E8E8E8','dark'=>false], 'tembaga' => ['bg'=>'#100A06','bg2'=>'#2C1A0A','accent'=>'#C8855A','light'=>'#D4956A','dark'=>false], 'putih-mutiara' => ['bg'=>'#FFFFFF','bg2'=>'#F8F8F8','accent'=>'#A8A8A8','light'=>'#707070','dark'=>true], 'kuning-pastel' => ['bg'=>'#FFF9E3','bg2'=>'#FFF1C2','accent'=>'#D4AF37','light'=>'#8B7500','dark'=>true], 'biru-awan' => ['bg'=>'#F0F7FF','bg2'=>'#E0EEFF','accent'=>'#4A90E2','light'=>'#2171CD','dark'=>true], 'pink-rose-gold'=> ['bg'=>'#FFF0F5','bg2'=>'#FADADD','accent'=>'#B76E79','light'=>'#8E565F','dark'=>true], 'hijau-mint' => ['bg'=>'#F5FFFA','bg2'=>'#E0FFF0','accent'=>'#3EB489','light'=>'#2D8E69','dark'=>true], 'ungu-lilac' => ['bg'=>'#F8F4FF','bg2'=>'#E6E0FF','accent'=>'#967BB6','light'=>'#745D8F','dark'=>true], 'coklat-latte' => ['bg'=>'#FAF5EF','bg2'=>'#F0E6D6','accent'=>'#A67B5B','light'=>'#7F5F46','dark'=>true], ]; $tema = $invitation->tema_warna ?? 'emas-klasik'; if ($tema === 'custom') { $bgHex = $invitation->warna_bg ?? '#0F0B06'; $accentHex = $invitation->warna_aksen ?? '#C9A96E'; $bgBrightness = hexBrightness($bgHex); $isDark = $bgBrightness > 128; $colors = [ 'bg' => $bgHex, 'bg2' => $bgHex, 'accent' => $accentHex, 'light' => $accentHex, 'dark' => $isDark, ]; } else { $colors = $themeColors[$tema] ?? $themeColors['emas-klasik']; $isDark = $colors['dark'] ?? false; } $headerImg = $invitation->header_image ? Storage::url($invitation->header_image) : null; $textMain = $isDark ? '#1A1208' : '#F5EDD8'; $textMuted = $isDark ? 'rgba(26,18,8,0.55)' : 'rgba(245,237,216,0.55)'; $borderCol = $isDark ? 'rgba(139,105,20,0.22)' : 'rgba(201,169,110,0.18)'; $navBg = $isDark ? 'rgba(240,232,216,0.97)' : 'rgba(10,8,4,0.96)'; $popupBg = $colors['bg2']; $inputBg = $isDark ? 'rgba(0,0,0,0.06)' : 'rgba(255,255,255,0.06)'; $inputColor = $isDark ? '#1A1208' : '#F5EDD8'; // AUTO HEADER TEXT — gelap jika tema cerah, cerah jika tema gelap $hTextColor = $isDark ? '#2C1A06' : '#F5EDD8'; $hMutedColor = $isDark ? 'rgba(44,26,6,0.7)' : 'rgba(232,213,176,0.75)'; $hShadow = $isDark ? '0 1px 0px rgba(255,255,255,0.6), 0 2px 12px rgba(255,255,255,0.25)' : '0 2px 20px rgba(0,0,0,0.5)'; $hAccent = $isDark ? '#7A4F10' : $colors['accent']; $hAccentMuted= $isDark ? 'rgba(122,79,16,0.8)' : $colors['accent']; @endphp {{-- OPENING --}}
{{ $invitation->nama_majlis }}
{{ $invitation->nama_ringkas_lelaki }}
@if($invitation->bilangan_pengantin == 2)
&
{{ $invitation->nama_ringkas_perempuan }}
@endif
{{ $invitation->tarikh_majlis ? $invitation->tarikh_majlis->format('d M Y') : '—' }}
{{-- MAIN --}}
{{-- HEADER --}}
{{ $invitation->nama_majlis }}
{{ $invitation->nama_ringkas_lelaki }}
@if($invitation->bilangan_pengantin == 2)
&
{{ $invitation->nama_ringkas_perempuan }}
@endif
{{ $invitation->tarikh_majlis ? strtoupper($invitation->tarikh_majlis->format('d M Y')) : '—' }}
{{-- JEMPUTAN --}}

Bismillahirrahmanirrahim
@if($invitation->nama_bapa_lelaki || $invitation->nama_ibu_lelaki)

{{ $invitation->nama_bapa_lelaki }}@if($invitation->nama_bapa_lelaki && $invitation->nama_ibu_lelaki)
&
@endif{{ $invitation->nama_ibu_lelaki }}

@endif @if($invitation->bilangan_pihak == 2 && ($invitation->nama_bapa_perempuan || $invitation->nama_ibu_perempuan))

BERSAMA

{{ $invitation->nama_bapa_perempuan }}@if($invitation->nama_bapa_perempuan && $invitation->nama_ibu_perempuan)
&
@endif{{ $invitation->nama_ibu_perempuan }}

@endif @if($invitation->ayat_jemputan)

{{ $invitation->ayat_jemputan }}

@endif
{{ $invitation->nama_pengantin_lelaki }}
@if($invitation->bilangan_pengantin == 2)
{{ $invitation->nama_pengantin_perempuan }}
@endif
@if($invitation->ayat_penutup)

{{ $invitation->ayat_penutup }}

@endif
{{-- TARIKH --}}
Tarikh Majlis
Save The Date
{{-- MINI CALENDAR --}} @if($invitation->tarikh_majlis) @php $tM = $invitation->tarikh_majlis; $firstDay = (int) \Carbon\Carbon::parse($tM->format('Y-m-01'))->dayOfWeek; $daysInMonth = (int) $tM->daysInMonth; $targetDay = (int) $tM->format('j'); @endphp
{{ strtoupper($tM->format('F')) }}
{{ $tM->format('Y') }}
@foreach(['S','M','T','W','T','F','S'] as $wd)
{{ $wd }}
@endforeach
@for($e = 0; $e < $firstDay; $e++)
·
@endfor @for($d = 1; $d <= $daysInMonth; $d++) @php $dow = ($firstDay + $d - 1) % 7; @endphp
{{ $d }}
@endfor
@endif
Tarikh
{{ $invitation->tarikh_majlis ? $invitation->tarikh_majlis->format('d M Y') : '—' }}
{{ $invitation->tarikh_majlis ? $invitation->tarikh_majlis->format('l') : '' }}
Masa
{{ $invitation->masa_majlis ? \Carbon\Carbon::parse($invitation->masa_majlis)->format('h:i A') : '—' }} @if($invitation->masa_tamat) — {{ \Carbon\Carbon::parse($invitation->masa_tamat)->format('h:i A') }} @endif
{{ $invitation->masa_tamat ? 'Majlis berlangsung' : 'hingga selesai' }}
Lokasi
{{ $invitation->alamat_majlis ?? '—' }}
{{-- TEMA PAKAIAN --}} @if($invitation->tema_pakaian)
Tema Pakaian
Dress Code
Tetamu dijemput hadir dengan
{{ $invitation->tema_pakaian }}
@endif {{-- ATURCARA MAJLIS --}} @php $aturcara = is_array($invitation->aturcara) ? $invitation->aturcara : []; @endphp @if($invitation->aturcara_aktif && count($aturcara) > 0)
Aturcara Majlis
Programme
@foreach($aturcara as $i => $item)
{{ $item['masa'] ? \Carbon\Carbon::parse($item['masa'])->format('h:i') : '—' }}
{{ $item['masa'] ? \Carbon\Carbon::parse($item['masa'])->format('A') : '' }}
{{ $item['tajuk'] }}
@endforeach
@endif {{-- GALLERY SLIDER --}} @if($invitation->gallery_aktif && $galleries->count() > 0)
Galeri
Gallery
@foreach($galleries as $i => $img)
{{ $invitation->nama_ringkas_lelaki }}{{ $invitation->bilangan_pengantin == 2 ? ' & '.$invitation->nama_ringkas_perempuan : '' }}
{{ $i+1 }} / {{ $galleries->count() }}
@endforeach
@if($galleries->count() > 1) @endif
@if($galleries->count() > 1)
@foreach($galleries as $i => $img)
@endforeach
@endif
@endif {{-- TAGLINE --}} @if($invitation->tagline)
— ✦ —

{!! nl2br(e($invitation->tagline)) !!}

@endif {{-- CTA --}}
@if($invitation->hadiah_aktif && ($invitation->bank_no_akaun || $invitation->qr_image)) @endif
{{-- UCAPAN --}}
Ucapan Tetamu
Guest Book
@foreach($wishes as $w)
{{ $w->nama }}
{{ $w->ucapan }}
@endforeach
{{-- FOOTER BRANDING --}}
Digital Invitation by
SatuJiwa
{{-- BOTTOM NAV --}} {{-- RSVP POPUP --}} {{-- WISH POPUP --}} {{-- CONTACT POPUP --}} {{-- MAPS POPUP --}} {{-- CALENDAR POPUP --}} {{-- GIFT POPUP --}} @if($invitation->bank_no_akaun || $invitation->qr_image) @endif {{-- FULL IMAGE --}}
{{-- MUSIC --}}
Muzik