From 30881b1f3af7cb804818acf38e339d7f69a9668f Mon Sep 17 00:00:00 2001 From: ccadmingit1 Date: Thu, 3 Sep 2026 14:41:55 +0000 Subject: [PATCH] =?UTF-8?q?AI=20update:=20=D7=94=D7=95=D7=A1=D7=A3=20?= =?UTF-8?q?=D7=9C=D7=90=D7=AA=D7=A8=20=D7=9B=D7=A4=D7=AA=D7=95=D7=A8=20?= =?UTF-8?q?=D7=A6=D7=A3=20(floating=20toggle)=20=D7=91=D7=A4=D7=99=D7=A0?= =?UTF-8?q?=D7=AA=20=D7=94=D7=9E=D7=A1=D7=9A=20=D7=A9=D7=9E=D7=90=D7=A4?= =?UTF-8?q?=D7=A9=D7=A8=20=D7=94=D7=97=D7=9C=D7=A4=D7=94=20=D7=91=D7=99?= =?UTF-8?q?=D7=9F=20=D7=A2=D7=91=D7=A8=D7=99=D7=AA=20=D7=9C=D7=90=D7=A0?= =?UTF-8?q?=D7=92=D7=9C=D7=99=D7=AA.=20=D7=A6=D7=95=D7=A8=20=D7=AA=D7=A8?= =?UTF-8?q?=D7=92=D7=95=D7=9D=20=D7=9E=D7=9C=D7=90=20=D7=9C=D7=90=D7=A0?= =?UTF-8?q?=D7=92=D7=9C=D7=99=D7=AA=20=D7=A9=D7=9C=20=D7=9B=D7=9C=20=D7=AA?= =?UTF-8?q?=D7=95=D7=9B=D7=9F=20=D7=94=D7=90=D7=AA=D7=A8=20=D7=94=D7=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- contact.html | 92 +++++++++++++++-------------- index.html | 160 +++++++++++++++++++++++++++------------------------ script.js | 124 +++++++++++++++++++++++++++++---------- style.css | 59 +++++++++++++++++++ 4 files changed, 286 insertions(+), 149 deletions(-) diff --git a/contact.html b/contact.html index ed47ea9..9aab8bb 100644 --- a/contact.html +++ b/contact.html @@ -15,7 +15,15 @@ - + + + @@ -55,9 +63,9 @@
- -

נשמח לשמוע מכם

-

השאירו פרטים ונחזור אליכם בהקדם האפשרי עם הצעת מחיר מותאמת

+ +

נשמח לשמוע מכם

+

השאירו פרטים ונחזור אליכם בהקדם האפשרי עם הצעת מחיר מותאמת

@@ -68,56 +76,56 @@
- +
- +
- +
- +
- +
- +
- -

* שדות חובה

+ +

* שדות חובה

@@ -163,24 +171,24 @@ Est Trade - + diff --git a/index.html b/index.html index c188b99..98232d0 100644 --- a/index.html +++ b/index.html @@ -15,7 +15,15 @@ - + + + @@ -60,27 +68,27 @@

- פתרונות - יבוא ויצוא - לעסקים + פתרונות + יבוא ויצוא + לעסקים

-

למעלה מ-20 שנות ניסיון בסחר בינלאומי, מלאי עשיר, לוגיסטיקה יעילה ושירות מקצועי שמבין את הצרכים שלכם.

+

למעלה מ-20 שנות ניסיון בסחר בינלאומי, מלאי עשיר, לוגיסטיקה יעילה ושירות מקצועי שמבין את הצרכים שלכם.

20+ - שנות ניסיון + שנות ניסיון
500+ - לקוחות פעילים + לקוחות פעילים
15K+ - פריטים במלאי + פריטים במלאי
@@ -90,22 +98,22 @@
- -

ניסיון וותק בענף היבוא והיצוא

-

Est Trade הוקמה לפני למעלה משני עשורים מתוך חזון להפוך את עולם הסחר הבינלאומי לנגיש ויעיל עבור עסקים בישראל. מאז, בנינו רשת קשרים בינלאומית רחבה עם יצרנים וספקים מובילים מרחבי העולם.

-

הצוות המקצועי שלנו מלווה כל לקוח באופן אישי, מאיתור המוצר המתאים ועד להגעתו לפתח העסק. אנחנו גאים באמינות שלנו, בשירות האישי ובמחויבות לעמידה בלוחות זמנים.

+ +

ניסיון וותק בענף היבוא והיצוא

+

Est Trade הוקמה לפני למעלה משני עשורים מתוך חזון להפוך את עולם הסחר הבינלאומי לנגיש ויעיל עבור עסקים בישראל. מאז, בנינו רשת קשרים בינלאומית רחבה עם יצרנים וספקים מובילים מרחבי העולם.

+

הצוות המקצועי שלנו מלווה כל לקוח באופן אישי, מאיתור המוצר המתאים ועד להגעתו לפתח העסק. אנחנו גאים באמינות שלנו, בשירות האישי ובמחויבות לעמידה בלוחות זמנים.

  • - קשרים ישירים עם יצרנים מובילים + קשרים ישירים עם יצרנים מובילים
  • - מחסנים מרכזיים עם זמינות גבוהה + מחסנים מרכזיים עם זמינות גבוהה
  • - ליווי מקצועי לאורך כל התהליך + ליווי מקצועי לאורך כל התהליך
@@ -132,9 +140,9 @@
- -

קטגוריות מוצרים

-

מגוון רחב של מוצרים ופתרונות לכל תעשייה

+ +

קטגוריות מוצרים

+

מגוון רחב של מוצרים ופתרונות לכל תעשייה

@@ -145,8 +153,8 @@
-

ציוד תעשייתי

-

מכונות, כלי עבודה וציוד לקווי ייצור מהמותגים המובילים בעולם.

+

ציוד תעשייתי

+

מכונות, כלי עבודה וציוד לקווי ייצור מהמותגים המובילים בעולם.

@@ -156,8 +164,8 @@
-

חומרי גלם

-

מתכות, פלסטיקה, רכיבים כימיים וחומרי בסיס לתעשייה.

+

חומרי גלם

+

מתכות, פלסטיקה, רכיבים כימיים וחומרי בסיס לתעשייה.

@@ -167,8 +175,8 @@
-

ציוד בנייה

-

חומרי בניין, כלים וציוד לקבלנים ולפרויקטים גדולים.

+

ציוד בנייה

+

חומרי בניין, כלים וציוד לקבלנים ולפרויקטים גדולים.

@@ -178,8 +186,8 @@
-

אלקטרוניקה

-

רכיבים אלקטרוניים, מעגלים ופתרונות טכנולוגיים.

+

אלקטרוניקה

+

רכיבים אלקטרוניים, מעגלים ופתרונות טכנולוגיים.

@@ -187,14 +195,14 @@
-

לוגיסטיקה

-

שירותי שילוח, אחסון והפצה לכל יעד בארץ ובעולם.

+

לוגיסטיקה

+

שירותי שילוח, אחסון והפצה לכל יעד בארץ ובעולם.

-

לא מצאתם?

-

נשמח לעזור לכם למצוא את המוצר המתאים

- דברו איתנו +

לא מצאתם?

+

נשמח לעזור לכם למצוא את המוצר המתאים

+ דברו איתנו
@@ -204,36 +212,36 @@
- -

היתרונות שלנו

+ +

היתרונות שלנו

-

אמינות ושקיפות

-

עבודה בשקיפות מלאה, עמידה בהתחייבויות ובניית יחסי אמון ארוכי טווח עם כל לקוח.

+

אמינות ושקיפות

+

עבודה בשקיפות מלאה, עמידה בהתחייבויות ובניית יחסי אמון ארוכי טווח עם כל לקוח.

-

שירות אישי

-

מנהל לקוח צמוד שמכיר את העסק שלכם ומלווה אתכם בכל שלב.

+

שירות אישי

+

מנהל לקוח צמוד שמכיר את העסק שלכם ומלווה אתכם בכל שלב.

-

מלאי זמין

-

מחסנים מרכזיים עם אלפי פריטים במלאי לאספקה מיידית.

+

מלאי זמין

+

מחסנים מרכזיים עם אלפי פריטים במלאי לאספקה מיידית.

-

לוגיסטיקה יעילה

-

מערך הפצה ארצי עם זמני אספקה קצרים ומעקב בזמן אמת.

+

לוגיסטיקה יעילה

+

מערך הפצה ארצי עם זמני אספקה קצרים ומעקב בזמן אמת.

@@ -243,8 +251,8 @@
- -

עובדים עם המובילים

+ +

עובדים עם המובילים

-
י.ב
+
י.ב
- יוסי ברק - בעלים, ברק מתכות + יוסי ברק + בעלים, ברק מתכות
@@ -354,9 +362,9 @@
-

מוכנים להתחיל?

-

השאירו פרטים ונחזור אליכם עם הצעת מחיר מותאמת אישית

- בקשת הצעת מחיר +

מוכנים להתחיל?

+

השאירו פרטים ונחזור אליכם עם הצעת מחיר מותאמת אישית

+ בקשת הצעת מחיר
@@ -373,24 +381,24 @@ Est Trade - +
diff --git a/script.js b/script.js index e7a6ddf..9330b0c 100644 --- a/script.js +++ b/script.js @@ -1,13 +1,69 @@ (function() { 'use strict'; + // Language Toggle Functionality + var currentLang = localStorage.getItem('est-trade-lang') || 'he'; + var langToggle = document.getElementById('langToggle'); + var langToggleText = langToggle ? langToggle.querySelector('.lang-toggle-text') : null; + + function setLanguage(lang) { + currentLang = lang; + localStorage.setItem('est-trade-lang', lang); + + var htmlEl = document.documentElement; + + if (lang === 'en') { + htmlEl.setAttribute('lang', 'en'); + htmlEl.setAttribute('dir', 'ltr'); + if (langToggleText) langToggleText.textContent = 'עב'; + } else { + htmlEl.setAttribute('lang', 'he'); + htmlEl.setAttribute('dir', 'rtl'); + if (langToggleText) langToggleText.textContent = 'EN'; + } + + var translatableElements = document.querySelectorAll('[data-lang-he][data-lang-en]'); + translatableElements.forEach(function(el) { + var heText = el.getAttribute('data-lang-he'); + var enText = el.getAttribute('data-lang-en'); + el.textContent = lang === 'en' ? enText : heText; + }); + + updatePageTitle(lang); + } + + function updatePageTitle(lang) { + var titleEl = document.querySelector('title'); + if (!titleEl) return; + + var currentTitle = titleEl.textContent; + + if (window.location.pathname.includes('contact')) { + titleEl.textContent = lang === 'en' ? 'Contact Us | Est Trade' : 'צור קשר | Est Trade'; + } else { + titleEl.textContent = lang === 'en' ? 'Est Trade | Professional Import & Export' : 'Est Trade | יבוא ויצוא מקצועי לעסקים'; + } + } + + if (langToggle) { + langToggle.addEventListener('click', function() { + var newLang = currentLang === 'he' ? 'en' : 'he'; + setLanguage(newLang); + }); + } + + // Initialize language on page load + if (currentLang) { + setLanguage(currentLang); + } + // Mobile Navigation Toggle - const navToggle = document.querySelector('.nav-toggle'); - const navLinks = document.querySelector('.nav-links'); + var navToggle = document.querySelector('.nav-toggle'); + var navLinks = document.querySelector('.nav-links'); if (navToggle && navLinks) { navToggle.addEventListener('click', function() { - const isExpanded = this.getAttribute('aria-expanded') === 'true'; + var isExpanded = this.getAttribute('aria-expanded') === 'true'; this.setAttribute('aria-expanded', !isExpanded); navLinks.classList.toggle('is-open'); }); @@ -30,10 +86,10 @@ } // Scroll Reveal Animation - const prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; + var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; if (!prefersReducedMotion) { - const revealElements = document.querySelectorAll( + var revealElements = document.querySelectorAll( '.about-content, .about-visual, .service-card, .advantage-item, ' + '.testimonial-card, .partner-logo, .section-header, .hero-content, ' + '.hero-stats, .info-card, .contact-form' @@ -43,13 +99,13 @@ el.classList.add('reveal'); }); - const observerOptions = { + var observerOptions = { root: null, rootMargin: '0px 0px -50px 0px', threshold: 0.1 }; - const revealObserver = new IntersectionObserver(function(entries) { + var revealObserver = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('is-visible'); @@ -64,39 +120,45 @@ } // Contact Form Handling with Validation - const contactForm = document.getElementById('contactForm'); - const formSuccess = document.getElementById('formSuccess'); + var contactForm = document.getElementById('contactForm'); + var formSuccess = document.getElementById('formSuccess'); if (contactForm && formSuccess) { - const validators = { + var validators = { name: { validate: function(value) { return value.trim().length >= 2; }, - message: 'נא להזין שם מלא' + messageHe: 'נא להזין שם מלא', + messageEn: 'Please enter your full name' }, email: { validate: function(value) { return /^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(value); }, - message: 'נא להזין כתובת אימייל תקינה' + messageHe: 'נא להזין כתובת אימייל תקינה', + messageEn: 'Please enter a valid email address' }, phone: { validate: function(value) { return /^[\d\-\+\s]{9,}$/.test(value); }, - message: 'נא להזין מספר טלפון תקין' + messageHe: 'נא להזין מספר טלפון תקין', + messageEn: 'Please enter a valid phone number' }, message: { validate: function(value) { return value.trim().length >= 10; }, - message: 'נא להזין הודעה (לפחות 10 תווים)' + messageHe: 'נא להזין הודעה (לפחות 10 תווים)', + messageEn: 'Please enter a message (at least 10 characters)' } }; function validateField(field) { - const validator = validators[field.name]; + var validator = validators[field.name]; if (!validator) return true; - const errorEl = field.parentElement.querySelector('.form-error'); - const isValid = validator.validate(field.value); + var errorEl = field.parentElement.querySelector('.form-error'); + var isValid = validator.validate(field.value); if (!isValid) { field.classList.add('is-invalid'); - if (errorEl) errorEl.textContent = validator.message; + if (errorEl) { + errorEl.textContent = currentLang === 'en' ? validator.messageEn : validator.messageHe; + } } else { field.classList.remove('is-invalid'); if (errorEl) errorEl.textContent = ''; @@ -107,7 +169,7 @@ // Real-time validation on blur Object.keys(validators).forEach(function(fieldName) { - const field = contactForm.querySelector('[name="' + fieldName + '"]'); + var field = contactForm.querySelector('[name="' + fieldName + '"]'); if (field) { field.addEventListener('blur', function() { validateField(this); @@ -123,24 +185,24 @@ contactForm.addEventListener('submit', function(e) { e.preventDefault(); - let isFormValid = true; + var isFormValid = true; Object.keys(validators).forEach(function(fieldName) { - const field = contactForm.querySelector('[name="' + fieldName + '"]'); + var field = contactForm.querySelector('[name="' + fieldName + '"]'); if (field && !validateField(field)) { isFormValid = false; } }); if (!isFormValid) { - const firstInvalid = contactForm.querySelector('.is-invalid'); + var firstInvalid = contactForm.querySelector('.is-invalid'); if (firstInvalid) firstInvalid.focus(); return; } - const submitBtn = contactForm.querySelector('button[type="submit"]'); - const originalText = submitBtn.textContent; - submitBtn.textContent = 'שולח...'; + var submitBtn = contactForm.querySelector('button[type="submit"]'); + var originalText = submitBtn.textContent; + submitBtn.textContent = currentLang === 'en' ? 'Sending...' : 'שולח...'; submitBtn.disabled = true; setTimeout(function() { @@ -153,14 +215,14 @@ // Smooth scroll for anchor links with header offset document.querySelectorAll('a[href^="#"]').forEach(function(anchor) { anchor.addEventListener('click', function(e) { - const targetId = this.getAttribute('href'); + var targetId = this.getAttribute('href'); if (targetId === '#') return; - const targetElement = document.querySelector(targetId); + var targetElement = document.querySelector(targetId); if (targetElement) { e.preventDefault(); - const headerHeight = document.querySelector('.site-header').offsetHeight; - const targetPosition = targetElement.getBoundingClientRect().top + window.pageYOffset - headerHeight - 20; + var headerHeight = document.querySelector('.site-header').offsetHeight; + var targetPosition = targetElement.getBoundingClientRect().top + window.pageYOffset - headerHeight - 20; window.scrollTo({ top: targetPosition, @@ -171,11 +233,11 @@ }); // Header background enhancement on scroll - const header = document.querySelector('.site-header'); + var header = document.querySelector('.site-header'); if (header) { window.addEventListener('scroll', function() { - const currentScroll = window.pageYOffset; + var currentScroll = window.pageYOffset; if (currentScroll > 100) { header.style.background = 'rgba(10, 22, 40, 0.98)'; diff --git a/style.css b/style.css index e337a10..6b966ad 100644 --- a/style.css +++ b/style.css @@ -123,6 +123,65 @@ button, input, select, textarea { } } +/* ======================== + LANGUAGE TOGGLE + ======================== */ + +.lang-toggle { + position: fixed; + bottom: 24px; + left: 24px; + z-index: 1001; + display: flex; + align-items: center; + gap: 8px; + padding: 12px 18px; + background: var(--accent); + color: var(--text-light); + border: none; + border-radius: 100px; + cursor: pointer; + font-family: var(--font-display); + font-size: 0.9rem; + font-weight: 600; + box-shadow: var(--shadow-lg); + transition: var(--transition-base); +} + +.lang-toggle:hover { + background: var(--accent-dark); + transform: translateY(-2px); + box-shadow: var(--shadow-xl); +} + +.lang-toggle:focus { + outline: 3px solid var(--accent-light); + outline-offset: 2px; +} + +.lang-toggle:focus:not(:focus-visible) { + outline: none; +} + +.lang-toggle:focus-visible { + outline: 3px solid var(--accent-light); + outline-offset: 2px; +} + +.lang-toggle-icon { + width: 20px; + height: 20px; +} + +.lang-toggle-text { + letter-spacing: 0.5px; +} + +[dir="ltr"] .lang-toggle { + left: auto; + right: 24px; +} + /* ======================== SKIP LINK ======================== */