delivery.astro raw

   1  ---
   2  export const prerender = false;
   3  import Base from '../layouts/Base.astro';
   4  ---
   5  <Base title="Доставка">
   6    <section class="about-hero">
   7      <div class="about-hero-bg" id="delivery-hero-bg" style="background-image: url('/images/shop-hero.jpg')"></div>
   8      <div class="container about-hero-content">
   9        <h1 class="about-hero-title" data-i18n="deliveryTitle">Доставка</h1>
  10      </div>
  11    </section>
  12  
  13    <section class="section about-content">
  14      <div class="container">
  15        <div class="about-layout">
  16          <div class="about-image" id="delivery-image"></div>
  17          <div class="about-text md-content" id="delivery-text">
  18            <div id="delivery-text-top">
  19              <p data-i18n="deliveryIntro">Поръчките от zlattea.com се доставят в цялата страна от куриерска фирма, с отстъпка от транспортните разходи. Доставката е в рамките на 1-3 работни дни, в зависимост от населеното място. Поръчки през сайта се приемат по всяко време на седмицата и денонощието и се обработват всеки работен ден от 10:00 до 18:00 часа. Поръчки, направени след 18:00 часа, се обработват/изпращат на следващия работен ден. Поръчки, в които има чупливи артикули, се застраховат според тарифата на превозвача.</p>
  20              <p data-i18n="deliveryFreeSofia" style="margin-left:1.5em">При поръчки на територията на гр. София над 40 EUR – доставката е БЕЗПЛАТНА.</p>
  21              <p data-i18n="deliveryFreeBg" style="margin-left:1.5em">При поръчки на територията на страната над 50 EUR – доставката е БЕЗПЛАТНА.</p>
  22            </div>
  23          </div>
  24          <div class="about-text md-content" id="delivery-text-rest">
  25            <p data-i18n="deliveryCollection" style="margin-top:1em">Можете също така да вземете поръчката си от нашия домашен адрес в гр. София. Предлагаме и чаена дегустация с предварителна уговорка по телефон или имейл, с поне един ден предизвестие.</p>
  26  
  27            <h3 data-i18n="deliveryPaymentTitle" style="margin-top:2em">ПЛАЩАНЕ</h3>
  28            <p data-i18n="deliveryPaymentText">Плащането може да бъде извършено по един от следните начини: с банкова карта Visa или MasterCard, с PayPal или с Bitcoin (Lightning Network). Данните за доставка и начин на плащане се уточняват чрез опциите за поръчка в сайта. Не се приемат поръчки с начин на плащане „наложен платеж".</p>
  29  
  30            <h3 data-i18n="deliveryDeliveryTitle" style="margin-top:2em">ДОСТАВКА</h3>
  31            <ul style="padding-left:1.5em; list-style-type:disc">
  32              <li data-i18n="deliveryBullet1" style="margin-bottom:0.75em">Стоката се изпраща с опция за преглед. В случай, че Клиентът не желае продукта, може да го върне директно на куриера. При връщане на продукта, Клиентът е длъжен да заплати обратната доставка.</li>
  33              <li data-i18n="deliveryBullet2" style="margin-bottom:0.75em">Срокът за доставка на наличните стоки е 3 (три) работни дни, считано след датата на потвърждаване на заявката от Търговеца. Търговецът си запазва правото да променя срока на доставка, като ви информира за това при приемане на вашата поръчка.</li>
  34              <li data-i18n="deliveryBullet3" style="margin-bottom:0.75em">При забавяне на доставката над 3 (три) работни дни, Търговецът не дължи неустойка на клиента. В случай на забавяне Клиентът има право да откаже поръчката. Търговецът не носи отговорност за закъснение в случай, че закъснението се дължи на куриер или друг доставчик.</li>
  35              <li data-i18n="deliveryBullet4" style="margin-bottom:0.75em">Поръчаната стока се доставя подходящо опакована, съгласно вида й и ползвания транспорт. Веднага след предаване на стоката на куриер, Търговецът се освобождава от риска, който се прехвърля върху потребителя/клиента.</li>
  36              <li data-i18n="deliveryBullet5" style="margin-bottom:0.75em">Веднага след доставката, стоките следва да бъдат прегледани внимателно от Клиента или упълномощено от него лице. Евентуални повреди, удари и други щети следва да бъдат докладвани незабавно на Търговеца. В случай, че бъде установено наличие на щети, които са се получили при транспортирането на стоката, Търговецът не носи отговорност за щетите по въпросната стока.</li>
  37              <li data-i18n="deliveryBullet6" style="margin-bottom:0.75em">При посочени неверен или сгрешен адрес, лице за контакт и/или телефон при подаване на заявката, Търговецът не е обвързан от каквото и да е задължение за изпълнение на поръчката.</li>
  38            </ul>
  39          </div>
  40        </div>
  41      </div>
  42    </section>
  43  </Base>
  44  
  45  <script>
  46    import { currentLang } from '../lib/i18n';
  47    import { renderMarkdown } from '../lib/markdown';
  48  
  49    function splitBlocks(md: string): string[] {
  50      return md.split(/\n\s*\n+/).map(b => b.trim()).filter(b => b.length > 0);
  51    }
  52  
  53    async function load() {
  54      try {
  55        const r = await fetch('/api/options');
  56        const opts = await r.json();
  57        const lang = currentLang();
  58        const rawUrl = opts.delivery_image || '/images/about-preview.jpg';
  59        const imgUrl = rawUrl.startsWith('http') ? `/api/proxy-image?url=${encodeURIComponent(rawUrl)}` : rawUrl;
  60        const md = lang === 'en' ? (opts.delivery_md_en || '') : (opts.delivery_md_bg || '');
  61  
  62        const imgEl = document.getElementById('delivery-image');
  63        if (imgEl) imgEl.innerHTML = `<img src="${imgUrl}" alt="Delivery" />`;
  64  
  65        if (md) {
  66          const blocks = splitBlocks(md);
  67          const top = blocks.slice(0, 3).map(b => renderMarkdown(b)).join('');
  68          const rest = blocks.slice(3).map(b => renderMarkdown(b)).join('');
  69          document.getElementById('delivery-text-top')!.innerHTML = top;
  70          document.getElementById('delivery-text-rest')!.innerHTML = rest;
  71        }
  72      } catch (e) { console.error('delivery load error:', e); }
  73    }
  74    load();
  75    window.addEventListener('lang-changed', load);
  76  </script>
  77  
  78  <script>
  79    const bg = document.getElementById('delivery-hero-bg');
  80    if (bg) {
  81      const factor = 0.5;
  82      function parallax() { bg.style.transform = `translateY(${window.scrollY * factor}px)`; }
  83      window.addEventListener('scroll', parallax, { passive: true });
  84      parallax();
  85    }
  86  </script>
  87  
  88  <style>
  89    .about-layout {
  90      display: grid;
  91      grid-template-columns: 1fr 2fr;
  92      gap: 2rem;
  93      align-items: start;
  94      position: relative;
  95      z-index: 1;
  96      color: var(--text);
  97      padding: 2rem;
  98    }
  99    .about-image img {
 100      width: 100%;
 101      border-radius: 8px;
 102    }
 103    .about-text {
 104      text-align: justify;
 105      line-height: 1.8;
 106      color: var(--text);
 107    }
 108    .about-text h2, .about-text h3 { color: var(--text); }
 109    .about-text p { color: var(--text); }
 110    .about-text li { color: var(--text); }
 111    .about-text a { color: var(--primary); }
 112    #delivery-text-rest {
 113      grid-column: 1 / -1;
 114      margin-top: 1.5rem;
 115    }
 116    @media (max-width: 768px) {
 117      .about-layout { grid-template-columns: 1fr; }
 118      .about-image { max-width: 400px; margin: 0 auto; }
 119      #delivery-text-rest { grid-column: auto; }
 120    }
 121  </style>
 122