templates/base_site/site/v3/base.html.twig line 1

Open in your IDE?
  1. <!DOCTYPE html>
  2. <html lang="fa" data-bs-theme="light">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6.     <title>فروشگاه ساز پوشه</title>
  7.     <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
  8.     <link rel="stylesheet" href="{{ asset('assets/base_site/site/v3/css/style.css') }}?v=3">
  9.     <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css"/>
  10.     <link rel="stylesheet" href="{{ asset('assets/base_site/site/v3/fontawesome/css/font-awesome.min.css') }}">
  11.     <script src="https://unpkg.com/feather-icons"></script>
  12.     <script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
  13.     {% block header %}{% endblock %}
  14. </head>
  15. <body>
  16. <div class="position-relative">
  17.     <div class="overlay-mask">
  18.     </div>
  19. </div>
  20. <div class="container" id="navbarBack">
  21.     <nav class="navbar navbar-expand-lg position-relative ">
  22.         <div class="container d-flex justify-content-between align-items-center">
  23.             <button class="navbar-toggler ms-2" type="button" id="mobileMenuToggle">
  24.                 <span class="navbar-toggler-icon"></span>
  25.             </button>
  26.             <a class="navbar-brand m-0 d-none d-lg-block" href="#">
  27.                 <img id="logoImage" src="{{ asset('logo.png') }}" alt="Logo" height="50">
  28.             </a>
  29.             <div class="collapse navbar-collapse justify-content-center " id="navbarNav">
  30.                 <ul class="navbar-nav text-center ">
  31.                     <li class="nav-item mx-2"><a class="nav-link" href="{{ path('base_home') }}">صفحه اصلی</a></li>
  32.                     <li class="nav-item mx-2"><a class="nav-link"
  33.                                                  href="#">ویژگی ها</a>
  34.                     </li>
  35.                     <li class="nav-item mx-2"><a class="nav-link" href="#">قیمت
  36.                             گذاری</a></li>
  37.                     <li class="nav-item mx-2"><a class="nav-link" href="#">مقالات</a>
  38.                     </li>
  39.                     <li class="nav-item mx-2"><a class="nav-link"
  40.                                                  href="#">تماس با ما</a>
  41.                     </li>
  42.                 </ul>
  43.             </div>
  44.             <div class="d-flex align-items-center gap-3">
  45.                 <svg id="lightModeButton" class="switch-mode" fill="none" height="16" stroke="#2a85ff"
  46.                      stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="16"
  47.                      xmlns="http://www.w3.org/2000/svg">
  48.                     <circle cx="12" cy="12" r="4"></circle>
  49.                     <path d="M12 2v2"></path>
  50.                     <path d="M12 20v2"></path>
  51.                     <path d="m4.93 4.93 1.41 1.41"></path>
  52.                     <path d="m17.66 17.66 1.41 1.41"></path>
  53.                     <path d="M2 12h2"></path>
  54.                     <path d="M20 12h2"></path>
  55.                     <path d="m6.34 17.66-1.41 1.41"></path>
  56.                     <path d="m19.07 4.93-1.41 1.41"></path>
  57.                 </svg>
  58.                 <svg id="darkModeButton" class="switch-mode" fill="none" height="16" stroke="currentColor"
  59.                      stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" width="16"
  60.                      xmlns="http://www.w3.org/2000/svg">
  61.                     <path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path>
  62.                 </svg>
  63.                 {% if app.user %}
  64.                     <a href="{{ path('app_user_handler') }}" id="darkModeToggle" class="btn btn-outline-secondary">
  65.                         <span class="font-bold text-white-in-dark">ناحیه مدیریت</span>
  66.                     </a>
  67.                 {% else %}
  68.                     <a href="{{ path('app_register') }}" id="darkModeToggle" class="btn btn-outline-secondary">
  69.                         <span class="font-bold text-white-in-dark">ثبت نام</span>
  70.                     </a>
  71.                     <a href="{{ path('shop_owner_login') }}" id="darkModeToggle" class="btn btn-outline-secondary">
  72.                         <span class="font-bold text-white-in-dark">ورود</span>
  73.                     </a>
  74.                 {% endif %}
  75.             </div>
  76.         </div>
  77.         <div class="mobile-menu position-fixed top-0 start-0 h-100 shadow" id="mobileMenu">
  78.             <ul class="navbar-nav p-4">
  79.                 <li class="nav-item mb-2"><a class="nav-link" href="{{ path('base_home') }}">صفحه اصلی</a></li>
  80.                 <li class="nav-item mb-2"><a class="nav-link" href="#">ویژگی
  81.                         ها</a></li>
  82.                 <li class="nav-item mb-2"><a class="nav-link" href="#">قیمت
  83.                         گذاری</a></li>
  84.                 <li class="nav-item mb-2"><a class="nav-link"
  85.                                              href="#">مقالات</a></li>
  86.                 <li class="nav-item mb-2"><a class="nav-link" href="#">تماس
  87.                         با ما</a></li>
  88.             </ul>
  89.         </div>
  90.         <div id="mobileOverlay" class="position-fixed top-0 start-0 w-100 h-100 bg-dark opacity-50"></div>
  91.     </nav>
  92. </div>
  93. {% block body %}{% endblock %}
  94. {{ include('@BaseSiteV3/modules/footer.html.twig') }}
  95. <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
  96. <script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
  97. {#<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/7.0.1/js/all.min.js"></script>#}
  98. <script>
  99.     feather.replace();
  100. </script>
  101. <script>
  102.     {# $('.switch-mode').click(function () { #}
  103.     {#    let html = document.documentElement; #}
  104.     {#    if (html.getAttribute("data-bs-theme") === "dark") { #}
  105.     {#        // light mode #}
  106.     {#        html.setAttribute("data-bs-theme", "light"); #}
  107.     {#        $('#lightModeButton').show() #}
  108.     {#        $('#darkModeButton').hide() #}
  109.     {#        $('#logoImage').attr('src', '{{ asset('logo.png') }}') #}
  110.     {#        $('#logoFooter').attr('src', '{{ asset('logo.png') }}') #}
  111.     {#        $('#documentationImage').attr('src', '{{ asset('assets/base_site/site/v3/img/documentation.png') }}') #}
  112.     {#        $('.arrange-image').attr('src', '{{ asset('assets/base_site/site/v3/img/collapsible.png') }}') #}
  113.     {#        $('.tab-image').attr('src', '{{ asset('assets/base_site/site/v3/img/dashboardEcommerce.png') }}') #}
  114.     {#    } else { #}
  115.     {#        //dark mode #}
  116.     {#        html.setAttribute("data-bs-theme", "dark"); #}
  117.     {#        $('#darkModeButton').show() #}
  118.     {#        $('#lightModeButton').hide() #}
  119.     {#        $('#logoImage').attr('src', '{{ asset('logo-dark.png') }}') #}
  120.     {#        $('#logoFooter').attr('src', '{{ asset('logo-dark.png') }}') #}
  121.     {#        $('#heroImg').attr('src', '{{ asset('assets/base_site/site/v3/img/hero-dark.png') }}') #}
  122.     {#        $('#documentationImage').attr('src', '{{ asset('assets/base_site/site/v3/img/documentation-dark.png') }}') #}
  123.     {#        $('.arrange-image').attr('src', '{{ asset('assets/base_site/site/v3/img/documentation-dark.png') }}') #}
  124.     {#        $('.tab-image').attr('src', '{{ asset('assets/base_site/site/v3/img/productCreate-dark.png') }}') #}
  125.     {#    } #}
  126.     {# }); #}
  127.     function applyTheme(theme) {
  128.         let html = document.documentElement;
  129.         if (theme === "dark") {
  130.             html.setAttribute("data-bs-theme", "dark");
  131.             $('#darkModeButton').show()
  132.             $('#lightModeButton').hide()
  133.             $('#logoImage').attr('src', '{{ asset('logo-dark.png') }}')
  134.             $('#logoFooter').attr('src', '{{ asset('logo-dark.png') }}')
  135.             $('#heroImg').attr('src', '{{ asset('assets/base_site/site/v3/img/hero-dark.png') }}')
  136.             $('#documentationImage').attr('src', '{{ asset('assets/base_site/site/v3/img/documentation-dark.png') }}')
  137.             $('.arrange-image').attr('src', '{{ asset('assets/base_site/site/v3/img/documentation-dark.png') }}')
  138.             $('.tab-image').attr('src', '{{ asset('assets/base_site/site/v3/img/productCreate-dark.png') }}')
  139.         } else {
  140.             html.setAttribute("data-bs-theme", "light");
  141.             $('#lightModeButton').show()
  142.             $('#darkModeButton').hide()
  143.             $('#logoImage').attr('src', '{{ asset('logo.png') }}')
  144.             $('#logoFooter').attr('src', '{{ asset('logo.png') }}')
  145.             $('#documentationImage').attr('src', '{{ asset('assets/base_site/site/v3/img/documentation.png') }}')
  146.             $('.arrange-image').attr('src', '{{ asset('assets/base_site/site/v3/img/collapsible.png') }}')
  147.             $('#heroImg').attr('src', '{{ asset('assets/base_site/site/v3/img/hero.png') }}')
  148.             $('.tab-image').attr('src', '{{ asset('assets/base_site/site/v3/img/dashboardEcommerce.png') }}')
  149.         }
  150.     }
  151.     // وقتی کاربر روی تغییر حالت کلیک می‌کنه
  152.     $('.switch-mode').click(function () {
  153.         let currentTheme = document.documentElement.getAttribute("data-bs-theme");
  154.         let newTheme = currentTheme === "dark" ? "light" : "dark";
  155.         // تم جدید رو اعمال کن
  156.         applyTheme(newTheme);
  157.         // ذخیره در localStorage
  158.         localStorage.setItem("theme", newTheme);
  159.     });
  160.     // هنگام لود صفحه بررسی کن که قبلا کاربر چیزی انتخاب کرده یا نه
  161.     document.addEventListener("DOMContentLoaded", function () {
  162.         let savedTheme = localStorage.getItem("theme") || "light";
  163.         applyTheme(savedTheme);
  164.     });
  165. </script>
  166. <script>
  167.     // jQuery
  168.     $(document).ready(function () {
  169.         const spans = $("#typing-header span");
  170.         let index = 0;
  171.         const speed = 70; // سرعت تایپ هر کلمه
  172.         function typeWord() {
  173.             if (index < spans.length) {
  174.                 const currentSpan = spans.eq(index);
  175.                 // ظاهر شدن کلمه
  176.                 currentSpan.css("opacity", 1);
  177.                 // بلور پویا
  178.                 let blurValue = 5; // مقدار بلور اولیه
  179.                 const blurInterval = setInterval(() => {
  180.                     blurValue -= 0.5; // کاهش تدریجی بلور
  181.                     if (blurValue <= 0) {
  182.                         blurValue = 0;
  183.                         clearInterval(blurInterval);
  184.                     }
  185.                     currentSpan.css("filter", `blur(${blurValue}px)`);
  186.                 }, 50);
  187.                 index++;
  188.                 setTimeout(typeWord, speed);
  189.             }
  190.         }
  191.         typeWord();
  192.         const $menu = $("#mobileMenu");
  193.         const $overlay = $("#mobileOverlay");
  194.         // باز و بسته کردن منو و overlay با همبرگر
  195.         $("#mobileMenuToggle").click(function (e) {
  196.             e.stopPropagation(); // جلوگیری از انتشار کلیک
  197.             $menu.toggleClass("active");
  198.             $overlay.toggleClass("active");
  199.         });
  200.         // بستن منو با کلیک روی overlay
  201.         $overlay.click(function () {
  202.             $menu.removeClass("active");
  203.             $overlay.removeClass("active");
  204.         });
  205.         // بستن منو با کلیک روی فضای خالی داخل منو (نه روی لینک‌ها)
  206.         $menu.click(function (e) {
  207.             if (e.target === this) { // اگر خود div منو کلیک شده
  208.                 $menu.removeClass("active");
  209.                 $overlay.removeClass("active");
  210.             }
  211.         });
  212.         const $navbar = $("#navbarBack"); // کلاس Navbar
  213.         const scrollOffset = 100; // مقدار اسکرول برای اعمال افکت
  214.         $(window).scroll(function () {
  215.             if ($(window).scrollTop() > scrollOffset) {
  216.                 $navbar.addClass("navbar-scrolled");
  217.             } else {
  218.                 $navbar.removeClass("navbar-scrolled");
  219.             }
  220.         });
  221.         $(".change-color").on("click", function () {
  222.             $(".change-color").removeClass("active");
  223.             $(this).addClass("active");
  224.         });
  225.         const $hoverBox = $(".hover-box");
  226.         const $cards = $(".tech-box");
  227.         const $wrapper = $(".tech-wrapper");
  228.         $cards.on("mouseenter", function () {
  229.             const cardOffset = $(this).offset();
  230.             const wrapperOffset = $wrapper.offset();
  231.             const width = $(this).outerWidth();
  232.             const height = $(this).outerHeight();
  233.             const left = cardOffset.left - wrapperOffset.left;
  234.             const top = cardOffset.top - wrapperOffset.top;
  235.             $hoverBox.css({
  236.                 width: width,
  237.                 height: height,
  238.                 transform: `translate(${left}px, ${top}px)`,
  239.                 opacity: 1
  240.             });
  241.         });
  242.         $cards.on("mouseleave", function () {
  243.             $hoverBox.css({opacity: 0});
  244.         });
  245.     });
  246. </script>
  247. {% block footer %}{% endblock %}
  248. </body>
  249. </html>