Files
citrus/resources/views/templates/corporate/bank-accounts.blade.php
T

668 lines
25 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
@extends('layouts.site')
@section('content')
@php
$accounts = $page->data['bank_accounts'] ?? [];
$currencySymbols = [
'TRY' => '₺',
'USD' => '$',
'EUR' => '€',
'GBP' => '£',
];
@endphp
<style>
.bank-accounts-section {
background: linear-gradient(180deg, #f8fafc 0%, #ffffff 40%);
}
.bank-account-card {
background: #ffffff;
border-radius: 1.25rem;
border: 1px solid #e2e8f0;
box-shadow: 0 4px 6px -1px rgba(15, 23, 42, 0.06), 0 2px 4px -2px rgba(15, 23, 42, 0.04);
overflow: hidden;
height: 100%;
display: flex;
flex-direction: column;
transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.bank-account-card:hover {
transform: translateY(-4px);
box-shadow: 0 20px 25px -5px rgba(15, 23, 42, 0.1), 0 8px 10px -6px rgba(15, 23, 42, 0.06);
border-color: #cbd5e1;
}
.bank-account-card__header {
position: relative;
padding: 2rem 1.5rem 1.75rem;
border-bottom: 1px solid #e2e8f0;
text-align: center;
min-height: 180px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.bank-account-card__logo-wrap {
width: 100%;
max-width: 240px;
height: 100px;
display: flex;
align-items: center;
justify-content: center;
padding: 0;
background: transparent;
border: none;
box-shadow: none;
margin: 0 auto;
}
.bank-account-card__logo-wrap img {
max-width: 100%;
width: auto;
height: auto;
object-fit: contain;
}
.bank-account-card__logo-placeholder {
width: 72px;
height: 72px;
border-radius: 1rem;
background: rgba(var(--bs-primary-rgb), 0.1);
color: var(--bs-primary);
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
}
.bank-account-card__currency {
position: absolute;
top: 1rem;
right: 1rem;
font-size: 0.75rem;
font-weight: 700;
letter-spacing: 0.04em;
padding: 0.35rem 0.75rem;
border-radius: 9999px;
background: #ffffff;
border: 1px solid #e2e8f0;
color: var(--bs-primary);
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
}
.bank-account-card__body {
padding: 1.5rem;
flex: 1;
display: flex;
flex-direction: column;
}
.bank-account-card__title {
font-size: 1.25rem;
font-weight: 700;
color: #0f172a;
margin-bottom: 0.25rem;
line-height: 1.3;
}
.bank-account-card__branch {
font-size: 0.875rem;
color: #64748b;
margin-bottom: 1.25rem;
}
.bank-account-card__field {
margin-bottom: 1rem;
}
.bank-account-card__field:last-of-type {
margin-bottom: 0;
}
.bank-account-card__label {
display: block;
font-size: 0.6875rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #94a3b8;
margin-bottom: 0.35rem;
}
.bank-account-card__value {
font-size: 0.9375rem;
font-weight: 600;
color: #1e293b;
line-height: 1.4;
}
.bank-account-card__iban-box {
margin-top: auto;
padding-top: 1rem;
border-top: 1px dashed #e2e8f0;
}
.bank-account-card__iban {
font-size: 0.8375rem;
font-weight: 700;
color: var(--bs-primary);
letter-spacing: 0.02em;
word-break: break-all;
line-height: 1.5;
padding: 0.75rem 1rem;
background: #f8fafc;
border-radius: 0.75rem;
border: 1px solid #e2e8f0;
user-select: all;
}
.bank-account-card__copy-btn-icon {
position: absolute;
right: 8px;
top: 8px;
bottom: 8px;
margin: auto 0;
display: inline-flex;
align-items: center;
justify-content: center;
border: none;
background: transparent;
width: 34px;
height: 34px;
color: var(--bs-primary);
cursor: pointer;
transition: color 0.2s, transform 0.1s;
z-index: 2;
}
.bank-account-card__copy-btn-icon:hover {
color: #0f172a;
}
.bank-account-card__copy-btn-icon:active {
transform: scale(0.9);
}
.bank-account-card__copy-btn-icon.is-copied {
color: #16a34a;
}
.bank-account-card__swift-copy-btn {
display: inline-flex;
align-items: center;
gap: 0.35rem;
margin-top: 0.5rem;
padding: 0;
border: none;
background: none;
font-size: 0.8125rem;
font-weight: 600;
color: var(--bs-primary);
cursor: pointer;
transition: opacity 0.2s;
}
.bank-account-card__swift-copy-btn:hover {
opacity: 0.8;
text-decoration: underline;
}
.bank-account-card__swift-copy-btn.is-copied {
color: #16a34a;
}
.bank-account-card__footer-bar {
height: 4px;
background: linear-gradient(90deg, var(--bs-primary), #3b82f6);
transform: scaleX(0);
transform-origin: left;
transition: transform 0.4s ease;
}
.bank-account-card:hover .bank-account-card__footer-bar {
transform: scaleX(1);
}
.bank-accounts-empty {
padding: 3rem 2rem;
background: #ffffff;
border-radius: 1.25rem;
border: 1px dashed #cbd5e1;
text-align: center;
max-width: 420px;
margin: 0 auto;
}
.bank-accounts-tabs {
display: inline-flex;
gap: 0;
border-bottom: 2px solid #e2e8f0;
margin-bottom: 2.5rem;
}
.bank-accounts-tabs a,
.bank-accounts-tabs span {
padding: 0.75rem 1.25rem;
font-size: 0.875rem;
font-weight: 600;
text-decoration: none;
color: #64748b;
border-bottom: 2px solid transparent;
margin-bottom: -2px;
transition: color 0.2s, border-color 0.2s;
}
.bank-accounts-tabs a:hover {
color: #334155;
}
.bank-accounts-tabs .is-active {
color: var(--bs-primary);
border-bottom-color: var(--bs-primary);
}
.bank-accounts-grid {
display: grid;
grid-template-columns: repeat(1, minmax(0, 1fr));
gap: 1.5rem;
margin-bottom: 2.5rem;
}
@media (min-width: 768px) {
.bank-accounts-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (min-width: 1024px) {
.bank-accounts-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.legal-info-box {
background: #ffffff;
border-radius: 1.25rem;
border: 1px solid #e2e8f0;
box-shadow: 0 4px 6px -1px rgba(15, 23, 42, 0.06), 0 2px 4px -2px rgba(15, 23, 42, 0.04);
padding: 2.5rem;
margin-top: 3rem;
position: relative;
overflow: hidden;
transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease;
}
.legal-info-box:hover {
transform: translateY(-2px);
box-shadow: 0 12px 20px -5px rgba(15, 23, 42, 0.08), 0 4px 6px -2px rgba(15, 23, 42, 0.04);
border-color: #cbd5e1;
}
.legal-info-box__title {
font-size: 1.25rem;
font-weight: 700;
color: #0f172a;
margin-bottom: 1.5rem;
display: flex;
align-items: center;
gap: 0.5rem;
}
.legal-info-box__title i {
color: var(--bs-primary);
font-size: 1.5rem;
}
.legal-info-grid {
display: grid;
grid-template-columns: repeat(1, minmax(0, 1fr));
gap: 1.5rem;
}
@media (min-width: 768px) {
.legal-info-grid {
grid-template-columns: repeat(2, minmax(0, 1fr));
}
}
@media (min-width: 1024px) {
.legal-info-grid {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
}
.legal-info-item {
display: flex;
flex-direction: column;
}
.legal-info-item__label {
font-size: 0.6875rem;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #94a3b8;
margin-bottom: 0.35rem;
}
.legal-info-item__value {
font-size: 0.9375rem;
font-weight: 600;
color: #1e293b;
line-height: 1.4;
}
.legal-info-box__decor {
position: absolute;
bottom: -20px;
right: -20px;
font-size: 8rem;
color: #f1f5f9;
line-height: 1;
z-index: 0;
pointer-events: none;
}
.legal-info-box__content {
position: relative;
z-index: 1;
}
.btn-copy-inline {
display: inline-flex;
align-items: center;
justify-content: center;
background: transparent;
border: none;
padding: 4px;
color: #94a3b8;
cursor: pointer;
font-size: 0.875rem;
line-height: 1;
border-radius: 4px;
flex-shrink: 0;
transition: color 0.2s, background-color 0.2s, transform 0.1s;
}
.btn-copy-inline:hover {
color: var(--bs-primary);
background-color: #f1f5f9;
}
.btn-copy-inline:active {
transform: scale(0.9);
}
.btn-copy-inline.is-copied {
color: #16a34a;
}
</style>
<section class="wrapper bank-accounts-section">
<div class="container pt-14 pb-14 xl:pt-20 xl:pb-20 lg:pt-20 lg:pb-20 md:pt-20 md:pb-20">
<div class="row text-center mb-8">
<div class="col-md-10 col-lg-8 col-xl-7 mx-auto">
<h1 class="display-1 mb-3">{!! $page->title !!}</h1>
@if($page->excerpt)
<p class="lead fs-lg mb-0">{!! $page->excerpt !!}</p>
@endif
</div>
</div>
<div class="text-center">
<nav class="bank-accounts-tabs" aria-label="{!! t('Ödeme yöntemi') !!}">
<a href="{{ route('page.show', ['slug' => 'online-odeme']) }}">{!! t('Kart ile Ödeme') !!}</a>
<span class="is-active">{!! t('Havale / EFT (IBAN)') !!}</span>
</nav>
</div>
<div class="bank-accounts-grid">
@forelse($accounts as $index => $account)
@php
$currency = $account['currency'] ?? 'TRY';
$currencyLabel = ($currencySymbols[$currency] ?? '') . ' ' . $currency;
@endphp
<div>
<article class="bank-account-card">
<div class="bank-account-card__header">
<span class="bank-account-card__currency">{{ $currencyLabel }}</span>
@if(!empty($account['logo']))
<div class="bank-account-card__logo-wrap">
<img
src="{{ asset('storage/' . $account['logo']) }}"
alt="{{ $account['bank_name'] }}"
loading="lazy"
>
</div>
@else
<div class="bank-account-card__logo-placeholder" aria-hidden="true">
<i class="uil uil-university"></i>
</div>
@endif
</div>
<div class="bank-account-card__body">
<h2 class="bank-account-card__title">{{ $account['bank_name'] }}</h2>
@if(!empty($account['branch_name']))
<p class="bank-account-card__branch">{{ $account['branch_name'] }}</p>
@endif
<div class="bank-account-card__field">
<span class="bank-account-card__label">{!! t('Hesap Sahibi') !!}</span>
<div class="bank-account-card__value">{{ $account['account_holder'] }}</div>
</div>
<div class="bank-account-card__iban-box">
<span class="bank-account-card__label">IBAN</span>
<div style="position: relative;">
<div class="bank-account-card__iban" id="iban-{{ $index }}" style="padding-right: 3rem;">{{ $account['iban'] }}</div>
<button
type="button"
class="bank-account-card__copy-btn-icon"
data-iban="{{ $account['iban'] }}"
data-copy-label="{!! t('Kopyala') !!}"
data-copied-label="{!! t('Kopyalandı') !!}"
aria-label="{!! t('IBAN kopyala') !!}"
>
<i class="uil uil-copy" style="font-size: 1.15rem;"></i>
</button>
</div>
</div>
@php
$swiftCode = !empty($account['swift_code']) ? $account['swift_code'] : 'TRHBTR2A';
@endphp
@if($currency !== 'TRY' || !empty($account['swift_code']))
<div class="bank-account-card__swift-box mt-3">
<span class="bank-account-card__label">SWIFT / BIC</span>
<div style="position: relative;">
<div class="bank-account-card__iban" id="swift-{{ $index }}" style="padding-right: 3rem;">{{ $swiftCode }}</div>
<button
type="button"
class="bank-account-card__copy-btn-icon"
data-iban="{{ $swiftCode }}"
data-copy-label="{!! t('Kopyala') !!}"
data-copied-label="{!! t('Kopyalandı') !!}"
aria-label="{!! t('SWIFT kopyala') !!}"
>
<i class="uil uil-copy" style="font-size: 1.15rem;"></i>
</button>
</div>
</div>
@endif
</div>
<div class="bank-account-card__footer-bar" aria-hidden="true"></div>
</article>
</div>
@empty
<div class="col-12">
<div class="bank-accounts-empty">
<i class="uil uil-wallet text-6xl text-slate-300 mb-4 d-block"></i>
<h3 class="h4 text-slate-500 mb-2">{!! t('Henüz banka hesabı eklenmemiş.') !!}</h3>
<p class="text-slate-400 mb-0">{!! t('Yönetim panelinden banka hesaplarınızı ekleyebilirsiniz.') !!}</p>
</div>
</div>
@endforelse
</div>
<!-- Legal Info Box -->
<div class="legal-info-box">
<div class="legal-info-box__decor" aria-hidden="true">
<i class="uil uil-shield-check"></i>
</div>
<div class="legal-info-box__content">
<h3 class="legal-info-box__title">
<i class="uil uil-info-circle"></i>
<span>{!! t('Yasal & Fatura Bilgileri') !!}</span>
</h3>
<div class="legal-info-grid">
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('Firma Ünvanı') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>TRUNÇGİL TEKNOLOJİ SANAYİ VE TİCARET LİMİTED ŞİRKETİ</span>
<button type="button" class="btn-copy-inline" data-copy-target="TRUNÇGİL TEKNOLOJİ SANAYİ VE TİCARET LİMİTED ŞİRKETİ" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('Vergi Dairesi') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>Şahinbey V.D.</span>
<button type="button" class="btn-copy-inline" data-copy-target="Şahinbey V.D." aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('Vergi Numarası') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>8591492435</span>
<button type="button" class="btn-copy-inline" data-copy-target="8591492435" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('MERSİS No') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>0859149243500001</span>
<button type="button" class="btn-copy-inline" data-copy-target="0859149243500001" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('D-U-N-S No') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>595948152</span>
<button type="button" class="btn-copy-inline" data-copy-target="595948152" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('SGK Sicil No') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>2-6210-0101-1219355-027-08-80-000</span>
<button type="button" class="btn-copy-inline" data-copy-target="2-6210-0101-1219355-027-08-80-000" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('E-Posta') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<a href="mailto:info@truncgil.com.tr" class="text-reset" style="text-decoration: none;">info@truncgil.com.tr</a>
<button type="button" class="btn-copy-inline" data-copy-target="info@truncgil.com.tr" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
<div class="legal-info-item">
<span class="legal-info-item__label">{!! t('Adres') !!}</span>
<div class="legal-info-item__value d-flex align-items-center justify-content-between gap-2">
<span>Çamtepe Mah. Mahmut Tevfik Atay Bul. Gaziantep Teknopark No: 4A İç Kapı No: 1 Şahinbey / Gaziantep</span>
<button type="button" class="btn-copy-inline" data-copy-target="Çamtepe Mah. Mahmut Tevfik Atay Bul. Gaziantep Teknopark No: 4A İç Kapı No: 1 Şahinbey / Gaziantep" aria-label="{!! t('Kopyala') !!}">
<i class="uil uil-copy"></i>
</button>
</div>
</div>
</div>
</div>
</div>
@if($page->content)
<div class="row mt-14">
<div class="col-lg-10 mx-auto">
<div class="prose max-w-none text-center text-gray-600">
{!! $page->content !!}
</div>
</div>
</div>
@endif
</div>
</section>
@push('scripts')
<script>
document.querySelectorAll('.bank-account-card__copy-btn-icon').forEach(function (btn) {
btn.addEventListener('click', function () {
var text = this.getAttribute('data-iban');
var icon = this.querySelector('i');
function showCopied() {
btn.classList.add('is-copied');
if (icon) icon.className = 'uil uil-check';
setTimeout(function () {
btn.classList.remove('is-copied');
if (icon) icon.className = 'uil uil-copy';
}, 2000);
}
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(showCopied).catch(function () {
fallbackCopy(text);
showCopied();
});
} else {
fallbackCopy(text);
showCopied();
}
});
});
document.querySelectorAll('.bank-account-card__swift-copy-btn').forEach(function (btn) {
btn.addEventListener('click', function () {
var swift = this.getAttribute('data-swift');
var copyLabel = this.getAttribute('data-copy-label');
var copiedLabel = this.getAttribute('data-copied-label');
var span = this.querySelector('span');
var icon = this.querySelector('i');
function showCopied() {
btn.classList.add('is-copied');
if (span) span.textContent = copiedLabel;
if (icon) icon.className = 'uil uil-check';
setTimeout(function () {
btn.classList.remove('is-copied');
if (span) span.textContent = copyLabel;
if (icon) icon.className = 'uil uil-copy';
}, 2000);
}
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(swift).then(showCopied).catch(function () {
fallbackCopy(swift);
showCopied();
});
} else {
fallbackCopy(swift);
showCopied();
}
});
});
function fallbackCopy(text) {
var ta = document.createElement('textarea');
ta.value = text;
ta.setAttribute('readonly', '');
ta.style.position = 'absolute';
ta.style.left = '-9999px';
document.body.appendChild(ta);
ta.select();
document.execCommand('copy');
document.body.removeChild(ta);
}
document.querySelectorAll('.btn-copy-inline').forEach(function (btn) {
btn.addEventListener('click', function () {
var text = this.getAttribute('data-copy-target');
var icon = this.querySelector('i');
function showCopied() {
btn.classList.add('is-copied');
if (icon) icon.className = 'uil uil-check text-success';
setTimeout(function () {
btn.classList.remove('is-copied');
if (icon) icon.className = 'uil uil-copy';
}, 1500);
}
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(showCopied).catch(function () {
fallbackCopy(text);
showCopied();
});
} else {
fallbackCopy(text);
showCopied();
}
});
});
</script>
@endpush
@endsection