diff --git a/BloomValleyNursery_FullProjectFiles/about.html b/BloomValleyNursery_FullProjectFiles/about.html deleted file mode 100644 index edbc349..0000000 --- a/BloomValleyNursery_FullProjectFiles/about.html +++ /dev/null @@ -1,275 +0,0 @@ - - - - - - - - About Us - Bloom Valley Nursery - - - - -
- -

Bloom Valley Nursery

- - -
- - -
-
- -
-

The Story of Bloom Valley

-

- Legend has it that in 1822, Benjamin Bloom, his wife Violet, and - their young daughter Nora stumbled upon a breathtaking valley - brimming with vibrant, rare flowers during their journey westward. - Enchanted by its beauty, they decided to settle there, abandoning - their plans to reach California. This picturesque haven became known - as Bloom Valley. -

-

- Today, on the very land where the Bloom family found their paradise, - stands Bloom Valley Nursery. Still family-owned and operated, - siblings Bethany, Vincent, and Nathaniel Bloom carry forward a - legacy of preserving and sharing the natural beauty that captivated - the hearts of their ancestors over two centuries ago. -

-

Though many things have changed through the years, our commitment to serving our community has remained the same. Let us help you cultivate joy, one bloom at a time!

-
-
-
-
-
-

We Want to Hear From You!

-

Your feedback provides us with valuable insight into where we stand in our commitment to our neighbors, friends, and the entire Bloom Valley community.

-

Feel free to contact us by filling out the form below if you have any questions, concerns, or simply want to tell us how we can better serve you in the future. You are also welcome to give us a call at the number above if you need to speak with someone directly. Our friendly staff can help answer your questions or guide you in placing custom orders as well!

-
-
-
-
-
- - -
-
- - -
-
- - -
-
-
-
- - -
-
- -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BloomValleyNursery_FullProjectFiles/cart.js b/BloomValleyNursery_FullProjectFiles/cart.js deleted file mode 100644 index 4d70e02..0000000 --- a/BloomValleyNursery_FullProjectFiles/cart.js +++ /dev/null @@ -1,178 +0,0 @@ -document.addEventListener('DOMContentLoaded', () => { - let cart = JSON.parse(sessionStorage.getItem('cart')) || []; - - // Get modal and cart-related elements - const modal = document.getElementById('cart-modal'); - const closeModal = document.querySelector('.close-modal'); - const cartItemsContainer = document.getElementById('cart-items'); - const cartTotalContainer = document.getElementById('cart-total'); - const clearCartModalButton = document.getElementById('clear-cart-modal-btn'); - const processOrderModalButton = document.getElementById('process-order-modal-btn'); - - // Custom confirmation modals for clear cart and process order - const confirmationModal = document.getElementById('confirmation-modal'); - const confirmationMessage = document.getElementById('confirmation-message'); - const confirmationCloseButton = document.getElementById('confirmation-close-btn'); - const confirmationConfirmButton = document.getElementById('confirmation-confirm-btn'); - - // Buttons - const shoppingCartButton = document.getElementById('shopping-cart'); - const cartDetailsButton = document.getElementById('cart-details'); - - // Custom alert modal for item added - const itemAddedModal = document.getElementById('item-added-modal'); - const itemAddedMessage = document.getElementById('item-added-message'); - const itemAddedClose = document.getElementById('item-added-close'); - - // Final confirmation modal for success messages - const finalConfirmationModal = document.getElementById('final-confirmation-modal'); - const finalConfirmationMessage = document.getElementById('final-confirmation-message'); - const finalConfirmationCloseButton = document.getElementById('final-confirmation-close-btn'); - - // Function to render the cart - function renderCart() { - cart = JSON.parse(sessionStorage.getItem('cart')) || []; - cartItemsContainer.innerHTML = ''; // Clear existing items - let total = 0; - - if (cart.length === 0) { - cartItemsContainer.innerHTML = '
  • Your cart is empty.
  • '; - cartTotalContainer.textContent = ''; - return; - } - - cart.forEach(item => { - const itemTotal = item.price * item.quantity; - total += itemTotal; - - const listItem = document.createElement('li'); - listItem.textContent = `${item.name} x ${item.quantity} - $${itemTotal.toFixed(2)}`; - cartItemsContainer.appendChild(listItem); - }); - - cartTotalContainer.textContent = `Subtotal: $${total.toFixed(2)}`; - } - - // Show cart modal with current cart content - function showModal() { - renderCart(); // Always render the latest cart - modal.style.display = 'flex'; // Show the cart modal - } - - // Show confirmation modal for actions (clear or process order) - function showConfirmationModal(message, action) { - confirmationMessage.textContent = message; - confirmationModal.style.display = 'flex'; // Show the confirmation modal - - // Confirm action on the "Confirm" button - confirmationConfirmButton.onclick = () => { - action(); // Execute the passed action (clear cart, process order) - confirmationModal.style.display = 'none'; // Close the confirmation modal after confirming - }; - - // Close confirmation modal without performing any action - confirmationCloseButton.onclick = () => { - confirmationModal.style.display = 'none'; - }; - } - - // Show final confirmation modal with success message - function showFinalConfirmationModal(message) { - finalConfirmationMessage.textContent = message; - finalConfirmationModal.style.display = 'flex'; // Show the final confirmation modal - finalConfirmationCloseButton.onclick = () => { - finalConfirmationModal.style.display = 'none'; // Close final confirmation modal - }; - } - - // Show custom modal when item is added to cart - function showItemAddedModal(message) { - itemAddedMessage.textContent = message; // Set message dynamically - itemAddedModal.style.display = 'flex'; // Show the modal - itemAddedClose.addEventListener('click', () => { - itemAddedModal.style.display = 'none'; // Close the modal - }); - } - - // Attach event listeners to both cart buttons - [shoppingCartButton, cartDetailsButton].forEach(button => { - if (button) { - button.addEventListener('click', showModal); // Open modal when clicked - } - }); - - // Close modal when clicking outside of it - window.addEventListener('click', event => { - if (event.target === modal) { - modal.style.display = 'none'; - } - }); - - // Close the modal by clicking the close button (for cart modal) - if (closeModal) { - closeModal.addEventListener('click', () => { - modal.style.display = 'none'; - }); - } - - // Add to cart functionality - const addToCartButtons = document.querySelectorAll('.add-to-cart-btn'); - addToCartButtons.forEach(button => { - button.addEventListener('click', () => { - const productId = parseInt(button.dataset.productId, 10); - const product = products.find(item => item.id === productId); - - if (product) { - const existingProduct = cart.find(item => item.id === productId); - - if (existingProduct) { - existingProduct.quantity++; - } else { - cart.push({ ...product, quantity: 1 }); - } - - sessionStorage.setItem('cart', JSON.stringify(cart)); // Save cart to session storage - showItemAddedModal(`${product.name} has been added to the cart!`); // Show custom modal - } - }); - }); - - // Event listener for Clear Cart button in the modal - if (clearCartModalButton) { - clearCartModalButton.addEventListener('click', () => { - showConfirmationModal('Are you sure you want to clear the cart?', () => { - sessionStorage.removeItem('cart'); - cart = []; - renderCart(); // Re-render cart after clearing it - showFinalConfirmationModal('Cart has been cleared!'); // Show final confirmation for cart clearing - }); - }); - } - - // Event listener for Process Order button in the modal - if (processOrderModalButton) { - processOrderModalButton.addEventListener('click', () => { - if (cart.length === 0) { - showItemAddedModal('Your cart is empty. Please add items to the cart before processing the order.'); - return; - } - - showConfirmationModal('Are you sure you want to process your order?', () => { - const receiptNumber = Math.floor(Math.random() * 1000000); // Generate receipt number - showFinalConfirmationModal(`Thank you for your order!\nYour receipt number is ${receiptNumber}.`); - sessionStorage.removeItem('cart'); - cart = []; - renderCart(); // Re-render cart after processing the order - }); - }); - } -}); - -const allCloseButtons = document.querySelectorAll('.close-modal'); -allCloseButtons.forEach(button => { - button.addEventListener('click', () => { - // Close the parent modal of the button clicked - const modal = button.closest('.modal'); - modal.style.display = 'none'; - }); -}); diff --git a/BloomValleyNursery_FullProjectFiles/community.html b/BloomValleyNursery_FullProjectFiles/community.html deleted file mode 100644 index 98e1d96..0000000 --- a/BloomValleyNursery_FullProjectFiles/community.html +++ /dev/null @@ -1,256 +0,0 @@ - - - - - - - - Community Events - Bloom Valley Nursery - - - - -
    - -

    Bloom Valley Nursery

    - - -
    - - -
    -

    Mark Your Calendars!

    -
    -
    - -
    -
    -

    Upcoming Events

    -
    -
    -

    Events at Bloom Valley Nursery

    -

    - All workshops at Bloom Valley Nursery are provided free of charge to - anyone interested in learning techniques and ideas for creating a - visually appealing living space that can be personalized to suite - individual needs. Registration links are provided in each Google - Calendar Event by clicking on the date of the event within the - Google Calendar on this page. -

    -
      -
    • - Gardening and Landscaping 101:
      When:
      2nd Tuesday of - Every Month @ 6:30 pm.
      Join Bethany Bloom as she shares her tips for - creating a themed decor through-out the home that you will be - delighted to share with your holiday guests. -
    • -
    • - Deck the Halls
      When: Saturday @ 10:00 am.
      Join - Nathaniel and Vincent as they guide us through picking and tending - the perfect live Christmas tree for your Christmas decoration - focal-point. -
    • -
    • - Christmas Eve and Christmas Day
      Bloom Valley - Nursery will close on Christmas Eve at 8:00 pm for any last-minute - shopping.
      The nursery will remain closed until January 2nd. During - this time, we will be making improvements to the nursery grounds and - store with the aim of better serving our Bloom Valley neighbors, - friends and family. We are excited to share the new features and changes with - you in the New Year!
      Happy Holidays!!! -
    • -
    -
    -
    -

    Community-Wide Events

    -

    - This section includes local community events for which Bloom Valley - Nursery is in partner with or a sponsor of. These events are - typically free of charge, but can include sub-events by other local - organizations and businesses that may not be free of charge. Check - with specific organizations, businesses, and the Bloom Valley - Chamber of Commerce for specific details that may not be provided by - Bloom Valley Nursery. -

    -
      -
    • - Tree Lighting Ceremony
      When:
      Thursday @ 6:00 pm.
      - Help us kick off the Holiday festivities by joining the Bloom - family, along with the Bloom Valley Chamber of Commerce, the Bloom - Valley Garden Club, and many other local businesses and - organizations, as we gather in front of City Hall for the annual Tree - Lighting Ceremony! This event will include performances by the Bloom - Valley Junior and Senior High Marching Bands, a workshop for making - tree ornaments, the annual Chili Cook-off, and much more! -
    • -
    -
    - -
    -
    - -

    - For more details, to add events to this page, or to leave feedback, - click here to send us a message. -

    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BloomValleyNursery_FullProjectFiles/feedback.js b/BloomValleyNursery_FullProjectFiles/feedback.js deleted file mode 100644 index 1ecc2bc..0000000 --- a/BloomValleyNursery_FullProjectFiles/feedback.js +++ /dev/null @@ -1,93 +0,0 @@ -document.addEventListener('DOMContentLoaded', () => { - const feedbackForm = document.querySelector('#feedback-form form'); - const nameInput = document.getElementById('name'); - const emailInput = document.getElementById('email'); - const phoneInput = document.getElementById('tel'); - const messageInput = document.getElementById('message'); - - const alertBox = document.getElementById('custom-alert'); - const alertMessage = document.getElementById('alert-message'); - const alertOkButton = document.getElementById('alert-ok-button'); - const alertCloseButton = document.getElementById('alert-close-btn'); - - const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; // Email validation regex - const phoneRegex = /^[0-9]{10,15}$/; // Phone validation regex (10-15 digits) - const nameRegex = /^[a-zA-Z\s]{2,}$/; // Name validation regex (at least 2 letters) - const sqlInjectionRegex = /[;'"\\]/; // Prevent SQL injection-like characters - - // Form submission handler - feedbackForm.addEventListener('submit', (event) => { - event.preventDefault(); // Prevent form submission and page refresh - - const name = nameInput.value.trim(); - const email = emailInput.value.trim(); - const phone = phoneInput.value.trim(); - const message = messageInput.value.trim(); - - // Validate each field - if (!nameRegex.test(name)) { - showCustomAlert('Please enter a valid name (letters and spaces only).'); - return; - } - - if (!emailRegex.test(email)) { - showCustomAlert('Please enter a valid email address.'); - return; - } - - if (!phoneRegex.test(phone)) { - showCustomAlert('Please enter a valid phone number (10-15 digits).'); - return; - } - - if (sqlInjectionRegex.test(message)) { - showCustomAlert('Your message contains invalid characters.'); - return; - } - - // Save feedback to localStorage - const feedbackData = { - name, - email, - phone, - message, - timestamp: new Date().toISOString(), - }; - - // Retrieve existing feedback data or initialize an empty array - const feedbackList = JSON.parse(localStorage.getItem('feedbackList')) || []; - feedbackList.push(feedbackData); // Add new feedback to the list - localStorage.setItem('feedbackList', JSON.stringify(feedbackList)); // Save updated list to localStorage - console.log('Feedback saved to localStorage:', feedbackList); - - // Show success message - showCustomAlert('Thank you for your feedback! We appreciate hearing from you.'); - feedbackForm.reset(); // Clear the input fields after submission - }); - - // Function to show the custom alert modal - function showCustomAlert(message) { - alertMessage.textContent = message; // Set modal message - alertBox.classList.remove('hidden'); // Display the modal - alertBox.style.display = 'flex'; // Ensure the modal is visible - } - - // Function to close the custom alert modal - function closeCustomAlert() { - alertBox.classList.add('hidden'); // Hide the modal - alertBox.style.display = 'none'; // Ensure it's hidden - } - - // Close modal on "OK" button click - alertOkButton.addEventListener('click', closeCustomAlert); - - // Close modal on "X" button click - alertCloseButton.addEventListener('click', closeCustomAlert); - - // Close modal when clicking outside the modal content - window.addEventListener('click', (event) => { - if (event.target === alertBox) { - closeCustomAlert(); - } - }); -}); diff --git a/BloomValleyNursery_FullProjectFiles/gallery-carousel.js b/BloomValleyNursery_FullProjectFiles/gallery-carousel.js deleted file mode 100644 index 5dcc4a0..0000000 --- a/BloomValleyNursery_FullProjectFiles/gallery-carousel.js +++ /dev/null @@ -1,127 +0,0 @@ -// Gallery Carousel .js -const products = { - trees: [ - { id: 1, name: "Maple Tree", description: "Beautiful maple tree.", price: 55.00, image: "images/trees/MapleTree.png" }, - { id: 2, name: "Birch Tree", description: "Sturdy birch tree.", price: 45.00, image: "images/trees/BirchTree.png" }, - { id: 3, name: "Apple Tree", description: "Fruitful apple tree.", price: 35.00, image: "images/trees/AppleTree.png" } - ], - indoor: [ - { id: 4, name: "Aloe Plant", description: "Thrives with 6-8 hours of direct sunlight a day.", price: 15.00, image: "images/indoor/AloePlant.png" }, - { id: 5, name: "Spider Plant", description: "Low-maintenance and perfect for spaces with lots of natural light.", price: 12.50, image: "images/indoor/SpiderPlant.png" }, - { id: 6, name: "String-of-Pearls Plant", description: "Best placed in east-facing windows or on shaded patios and balconies.", price: 20.00, image: "images/indoor/StringofPearls.png" } - ], - tools: [ - { id: 7, name: "Watering Can", description: "Galvanized aluminum watering can.", price: 15.00, image: "images/accessories/WateringCan.png" }, - { id: 8, name: "Potting Soil", description: "Premium-blend of nutrient-rich potting soil - 10 lb bag.", price: 8.00, image: "images/accessories/PottingSoil.png" }, - { id: 9, name: "Bird House", description: "Handmade wooden bird house for hanging or mounting.", price: 11.00, image: "images/accessories/BirdHouse.png" } - ] -}; - -document.addEventListener('DOMContentLoaded', () => { - console.log("DOM fully loaded and parsed"); // Check if the DOM is ready - - const productCarousel = document.getElementById('product-carousel'); - const scrollLeftButton = document.getElementById('scroll-left'); - const scrollRightButton = document.getElementById('scroll-right'); - const categoryButtons = document.querySelectorAll('.cat-btn'); - - // Scroll button functionality - scrollLeftButton.addEventListener('click', () => { - productCarousel.scrollBy({ left: -300, behavior: 'smooth' }); - }); - - scrollRightButton.addEventListener('click', () => { - productCarousel.scrollBy({ left: 300, behavior: 'smooth' }); - }); - - // Map buttons to categories - categoryButtons.forEach(button => { - button.addEventListener('click', (event) => { - event.preventDefault(); // Prevent default navigation - const url = new URL(button.href); // Parse the URL - const category = url.searchParams.get('category'); // Get category from the query parameter - updateProductList(category); // Update the product list - }); - }); - - // Load default category or the one from the current URL - const currentUrl = new URL(window.location.href); - const defaultCategory = currentUrl.searchParams.get('category') || 'trees'; - updateProductList(defaultCategory); -}); - -function updateScrollButtons() { - const scrollLeftButton = document.getElementById('scroll-left'); - const scrollRightButton = document.getElementById('scroll-right'); - const productCarousel = document.getElementById('product-carousel'); - - scrollLeftButton.style.display = productCarousel.scrollLeft === 0 ? 'none' : 'block'; - scrollRightButton.style.display = - productCarousel.scrollWidth - productCarousel.clientWidth === productCarousel.scrollLeft - ? 'none' - : 'block'; -} - -function updateProductList(category) { - const productList = document.getElementById("product-list"); - if (!productList) { - console.error("Element with ID 'product-list' not found in the DOM."); - return; - } - - productList.innerHTML = ""; // Clear existing products - console.log(`Updating product list for category: ${category}`); // Debugging line - - const selectedProducts = products[category]; - - if (selectedProducts) { - selectedProducts.forEach(product => { - const productCard = document.createElement("div"); - productCard.className = "product-card"; - - console.log(`Creating product card for: ${product.name}`); // Debugging line - - productCard.innerHTML = ` - ${product.name} -

    ${product.name}

    -

    ${product.description}

    -

    $${product.price}

    - - `; - productList.appendChild(productCard); - - // Add event listener for "Add to Cart" button - const addToCartButton = productCard.querySelector('.add-to-cart-btn'); - addToCartButton.addEventListener('click', () => { - addToCart(product.id); - }); - }); - } else { - console.error(`No products found for category: ${category}`); - } -} - -function addToCart(productId) { - const product = findProductById(productId); - if (product) { - let cart = JSON.parse(sessionStorage.getItem('cart')) || []; - const existingProduct = cart.find(item => item.id === productId); - - if (existingProduct) { - existingProduct.quantity++; - } else { - cart.push({ ...product, quantity: 1 }); - } - - sessionStorage.setItem('cart', JSON.stringify(cart)); - alert(`${product.name} has been added to your cart!`); - } -} - -function findProductById(productId) { - for (let category in products) { - const product = products[category].find(item => item.id === productId); - if (product) return product; - } - return null; -} diff --git a/BloomValleyNursery_FullProjectFiles/gallery.html b/BloomValleyNursery_FullProjectFiles/gallery.html deleted file mode 100644 index 3756c36..0000000 --- a/BloomValleyNursery_FullProjectFiles/gallery.html +++ /dev/null @@ -1,219 +0,0 @@ - - - - - - - - Gallery - Bloom Valley Nursery - - - - -
    - -

    Bloom Valley Nursery

    - - -
    - - -
    - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BloomValleyNursery_FullProjectFiles/images/Client1_LogoPalette2_F0C06D.png b/BloomValleyNursery_FullProjectFiles/images/Client1_LogoPalette2_F0C06D.png deleted file mode 100644 index 6ad2d95..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/Client1_LogoPalette2_F0C06D.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/accessories/BirdHouse.png b/BloomValleyNursery_FullProjectFiles/images/accessories/BirdHouse.png deleted file mode 100644 index ae1692c..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/accessories/BirdHouse.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/accessories/PottingSoil.png b/BloomValleyNursery_FullProjectFiles/images/accessories/PottingSoil.png deleted file mode 100644 index 7bc91eb..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/accessories/PottingSoil.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/accessories/WateringCan.png b/BloomValleyNursery_FullProjectFiles/images/accessories/WateringCan.png deleted file mode 100644 index 2c92d78..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/accessories/WateringCan.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/indoor/AloePlant.png b/BloomValleyNursery_FullProjectFiles/images/indoor/AloePlant.png deleted file mode 100644 index e9a1124..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/indoor/AloePlant.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/indoor/SpiderPlant.png b/BloomValleyNursery_FullProjectFiles/images/indoor/SpiderPlant.png deleted file mode 100644 index ea3e8bb..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/indoor/SpiderPlant.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/indoor/StringofPearls.png b/BloomValleyNursery_FullProjectFiles/images/indoor/StringofPearls.png deleted file mode 100644 index 13fc9f8..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/indoor/StringofPearls.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/trees/AppleTree.png b/BloomValleyNursery_FullProjectFiles/images/trees/AppleTree.png deleted file mode 100644 index e303282..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/trees/AppleTree.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/trees/BirchTree.png b/BloomValleyNursery_FullProjectFiles/images/trees/BirchTree.png deleted file mode 100644 index af43b15..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/trees/BirchTree.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/images/trees/MapleTree.png b/BloomValleyNursery_FullProjectFiles/images/trees/MapleTree.png deleted file mode 100644 index 66906cf..0000000 Binary files a/BloomValleyNursery_FullProjectFiles/images/trees/MapleTree.png and /dev/null differ diff --git a/BloomValleyNursery_FullProjectFiles/index.html b/BloomValleyNursery_FullProjectFiles/index.html deleted file mode 100644 index ff5573e..0000000 --- a/BloomValleyNursery_FullProjectFiles/index.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - - - Homepage - Bloom Valley Nursery - - - - -
    - -

    Bloom Valley Nursery

    - - -
    - - -
    - - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/BloomValleyNursery_FullProjectFiles/newsletter.js b/BloomValleyNursery_FullProjectFiles/newsletter.js deleted file mode 100644 index 30909e9..0000000 --- a/BloomValleyNursery_FullProjectFiles/newsletter.js +++ /dev/null @@ -1,50 +0,0 @@ -document.addEventListener('DOMContentLoaded', () => { - const newsletterForm = document.getElementById('newsletter-form'); - const emailInput = document.getElementById('email-input'); - const alertBox = document.getElementById('custom-alert'); - const alertMessage = document.getElementById('alert-message'); - const alertOkButton = document.getElementById('alert-ok-button'); - const alertCloseButton = document.getElementById('alert-close-btn'); - - // Form submission handler - newsletterForm.addEventListener('submit', (event) => { - event.preventDefault(); // Prevent form from submitting and refreshing the page - - const email = emailInput.value.trim(); - const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/; - - // Check if email is valid - if (!emailRegex.test(email)) { - showCustomAlert('Please enter a valid email address.'); - return; - } - - // Show success message - showCustomAlert(`Thank you for subscribing, ${email}!`); - newsletterForm.reset(); // Clear the input field after submission - }); - - // Function to show the custom alert modal - function showCustomAlert(message) { - alertMessage.textContent = message; // Set the alert message - alertBox.classList.remove('hidden'); // Show the alert modal - alertBox.style.display = 'flex'; // Ensure the modal is displayed - - // Close the modal when the "OK" button is clicked - alertOkButton.addEventListener('click', closeCustomAlert); - alertCloseButton.addEventListener('click', closeCustomAlert); - } - - // Function to hide the custom alert modal - function closeCustomAlert() { - alertBox.classList.add('hidden'); // Hide the alert modal - alertBox.style.display = 'none'; // Ensure the modal is hidden - } - - // Close the modal if clicking outside the modal content - window.addEventListener('click', (event) => { - if (event.target === alertBox) { - closeCustomAlert(); - } - }); -}); diff --git a/BloomValleyNursery_FullProjectFiles/package-lock.json b/BloomValleyNursery_FullProjectFiles/package-lock.json deleted file mode 100644 index 7338258..0000000 --- a/BloomValleyNursery_FullProjectFiles/package-lock.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "stackblitz-starters-rdsfw2", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "dependencies": { - "servor": "^4.0.2" - } - }, - "node_modules/servor": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/servor/-/servor-4.0.2.tgz", - "integrity": "sha512-MlmQ5Ntv4jDYUN060x/KEmN7emvIqKMZ9OkM+nY8Bf2+KkyLmGsTqWLyAN2cZr5oESAcH00UanUyyrlS1LRjFw==", - "bin": { - "servor": "cli.js" - } - } - } -} diff --git a/BloomValleyNursery_FullProjectFiles/package.json b/BloomValleyNursery_FullProjectFiles/package.json deleted file mode 100644 index 49d805b..0000000 --- a/BloomValleyNursery_FullProjectFiles/package.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "scripts": { - "start": "servor --reload" - }, - "dependencies": { - "servor": "^4.0.2" - } -} diff --git a/BloomValleyNursery_FullProjectFiles/script.js b/BloomValleyNursery_FullProjectFiles/script.js deleted file mode 100644 index 6446c17..0000000 --- a/BloomValleyNursery_FullProjectFiles/script.js +++ /dev/null @@ -1,106 +0,0 @@ -document.addEventListener("DOMContentLoaded", () => { - // Shopper Perks Carousel - const perks = document.querySelectorAll(".perk-item"); - let currentIndexPerks = 0; - - function showNextPerk() { - // Hide all perks - perks.forEach(perk => { - perk.classList.remove("visible"); // Hide by removing 'visible' class - perk.style.display = "none"; // Set display to none - }); - - // Show the current perk - perks[currentIndexPerks].classList.add("visible"); // Show current perk by adding 'visible' class - perks[currentIndexPerks].style.display = "block"; // Explicitly set display to block - - console.log(`Showing perk ${currentIndexPerks}`); // Debugging line - - // Move to the next perk, loop back to the start if at the end - currentIndexPerks = (currentIndexPerks + 1) % perks.length; - } - - // Show the first perk initially - showNextPerk(); - - // Set an interval to cycle through the perks every 2.25 seconds (2250ms) - setInterval(showNextPerk, 2250); - - // Customer Highlights Carousel - const testimonials = document.querySelectorAll(".testimonial"); - let currentIndexTestimonials = 0; - - console.log("Testimonials found: ", testimonials.length); // Debugging line - - function showNextTestimonial() { - // Hide all testimonials - testimonials.forEach(testimonial => { - testimonial.classList.remove("visible"); // Remove 'visible' class - testimonial.style.display = "none"; // Set display to none - }); - - // Show the current testimonial - testimonials[currentIndexTestimonials].classList.add("visible"); // Add 'visible' class to show current testimonial - testimonials[currentIndexTestimonials].style.display = "block"; // Explicitly set display to block - - console.log(`Showing testimonial ${currentIndexTestimonials}`); // Debugging line - - // Move to the next testimonial, loop back to the start if at the end - currentIndexTestimonials = (currentIndexTestimonials + 1) % testimonials.length; - } - - // Show the first testimonial initially - showNextTestimonial(); - - // Set an interval to cycle through the testimonials every 3.5 seconds (3500ms) - setInterval(showNextTestimonial, 3500); - - // Featured Items Carousel - const featuredItems = document.querySelectorAll("#featured-images .featured-item"); - let currentIndex = 0; - - function showNextItem() { - // Remove the 'active' class from the current image - featuredItems[currentIndex].classList.remove("active"); - - // Move to the next index, looping back to the start if necessary - currentIndex = (currentIndex + 1) % featuredItems.length; - - // Add the 'active' class to the next image - featuredItems[currentIndex].classList.add("active"); - } - - // Initially show the first image by adding 'active' class - featuredItems[currentIndex].classList.add("active"); - - // Cycle through images every 3 seconds - setInterval(showNextItem, 3000); -}); - -// Featured Items Carousel -const featuredItems = document.querySelectorAll("#featured-images .featured-item"); -let currentIndexFeatured = 0; - -function updateFeaturedImages() { - featuredItems.forEach((item, index) => { - // Hide the text inside each tag by setting the text's display to 'none' - const text = item.closest('a'); - if (text) text.style.display = (index === currentIndexFeatured ? "block" : "none"); - - // Show only the active image by setting display to block for the current image - const image = item; - image.style.display = (index === currentIndexFeatured ? "block" : "none"); - }); -} - -// Show next featured image -function showNextFeatured() { - currentIndexFeatured = (currentIndexFeatured + 1) % featuredItems.length; // Loop to the start - updateFeaturedImages(); -} - -// Initialize featured items carousel by showing the first image -updateFeaturedImages(); - -// Set up automatic cycling every 3 seconds -setInterval(showNextFeatured, 3000); diff --git a/BloomValleyNursery_FullProjectFiles/styles.css b/BloomValleyNursery_FullProjectFiles/styles.css deleted file mode 100644 index 18b1572..0000000 --- a/BloomValleyNursery_FullProjectFiles/styles.css +++ /dev/null @@ -1,1158 +0,0 @@ -* Global Styles */ -html { - font-size: 17px; /* Base font size for scaling */ - scroll-behavior: smooth; -} - -body { - display: flex; - flex-direction: column; - align-items: center; - font-family: 'Calibri', sans-serif; - font-size: 1rem; /* Default font size based on 16px */ - line-height: 1.5; - margin: 0; - padding: 0; - background-color: #bdd4da; /* Sky Bloom */ -} - -body h1 { - text-shadow: 0.5px 0.5px .5px #f7f7f7, /* Bottom-right top shadow */ - -0.5px -0.5px .5px #f7f7f7, /* Top-left top shadow */ - -0.5px 0.5px .5px #f7f7f7, /* Bottom-left top shadow */ - 0.5px -0.5px .5px #f7f7f7; /* Top-right top shadow */ -} - -/* |--↓-↓-↓ Start Header ↓-↓-↓--| */ -header { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - padding: 20px; - background-color: #bdd4da; /* Light teal */ - border-bottom: 3px solid #96baa0; /* Pale green for contrast */ -} - -header .logo { - position: absolute; - left: 3vw; - top: 20px; - width: auto; /* Maintains aspect ratio */ - height: auto; /* Constrains the height to 80px */ - max-width: 20vw; -} - - -header .logo img { - display: block; - width: 180px; - height: auto; - max-width: 100%; - filter: drop-shadow(0 0 2px #f0c06d) drop-shadow(0 0 0px #014038); /* Yellow outline effect */ - - -} - -header h1 { - font-family: 'Georgia', serif; - font-size: 2.8rem; - color: #014038; /* Dark green for the title */ - margin: 10px 0; - text-align: center; -} - -header p.tagline { - font-family: 'Arial', sans-serif; - font-size: 1.4rem; - color: #96baa0; /* Pale green for the tagline */ - margin: 0; - text-align: center; -} - -nav { - margin-top: 20px; - background-color: #f7f7f7; /* White for navigation background */ - padding: 10px 20px; - border-radius: 5px; - width: 100%; /* Ensures the nav spans the width of the header */ - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -button#shopping-cart{ - position: absolute; - top: 100px; - right: 100px; - padding: 20px; - border-radius: 10px; - background-color: #f7f7f7; - color: #014038; - cursor: pointer; - z-index: 5; - transition: background-color 0.3s ease, color 0.3s ease; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -button#shopping-cart:hover { - background-color: #014038; - color: #96baa0; - border: solid #f7f7f7; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -nav ul { - display: flex; - justify-content: center; - list-style: none; - padding: 0; - margin: 0; -} - -nav ul li { - margin: 0 20px; - border-radius: 5px; -} - -.current-page { - font-size: 1.4em; - font-weight: bold; - color: #014038; - background-color: #96baa0; - border: none; - text-decoration: underline; - white-space: wrap; - text-align: center; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -nav ul li a { - font-family: 'Arial', sans-serif; - font-size: 1rem; - font-weight: bold; - border: solid #f7f7f7; - color: #014038; - text-decoration: underline; - padding: 8px 15px; - border-radius: 10px; - transition: background-color 0.3s ease, color 0.3s ease; -} - -nav ul li a:hover { - background-color: #f7f7f7; - color: #014038; - border: solid #014038; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -/* Title Large (Arial Bold 30px) */ -h1 { - font-family: 'Arial', sans-serif; - font-weight: bold; - font-size: 1.875rem; /* 30px for title */ -} - -/* Title (Arial Bold 25px) */ -h2 { - font-family: 'Arial', sans-serif; - font-weight: bold; - font-size: 1.5625rem; -} - -/* Subtitle (Comfortaa Normal 15px) */ -h3 { - font-family: 'Comfortaa', sans-serif; - font-size: .9375rem ; /* 15px for subtitle */ -} - -/* Body Large (Calibri Normal 20px) */ -p.body-large { - font-family: 'Calibri', sans-serif; - font-size: 1.25rem; /* 20px for body large */ -} - -/* Body Strong (Calibri Bold 16px) */ -strong { - font-family: 'Calibri', sans-serif; - font-weight: bold; - font-size: 1rem; /* 16px for body strong */ -} - -/* Body (Calibri Normal 16px) */ -p.body { - font-family: 'Calibri', sans-serif; - font-size: 1rem; /* 16px for regular body text */ -} - -/* Captions (Arial Bold 11px) */ -figcaption { - font-family: 'Arial', sans-serif; - font-weight: bold; - font-size: .6875rem; /* 11px for captions */ -} - -@media (max-width: 780px) { - html{ - font-size: 14px; - } -} - - -main { - display: flex; - flex-direction: row; - align-items: flex-start; - justify-content: space-between; - padding: 20px; -} - -#left-aside, -#right-aside { - flex: 1; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#featured-container { - flex: 2; -} - -#left-aside { - display: flex; - flex-direction: column; - background-color: #f0c06d; - border: solid #f7f7f7; - padding: 5px 10px; - margin-top: 10px; - border-radius: 10px; -} - -#left-aside h2 { - border: solid #014038; - background-color: #bdd4da; - border-radius: 10px; -} - -#perks-feature-container { - background-color: #96baa0; - color: #014038; - border: solid #014038; - border-radius: 10px; - padding: 5px 10px; - margin-top: 5px; - text-align: center; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -.perk-item { - background-color: #f7f7f7; - color: #014038; - border: solid #014038; - border-radius: 10px; - padding: 5px 10px; - white-space: wrap; - max-height: 250px; - min-height: 250px; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); - text-align: -} - -#perks-heading { - font-family: 'Arial', sans-serif; - font-weight: bold; - font-size: 1.875rem; /* 30px for title */ - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#featured-container { - display: flex; - flex-direction: column; - text-align: center; - margin-right: 40px; - margin-top: 10px; -} - -#featured-container h2 { - font-size: 1.875rem; - text-align: center; - text-shadow: 0.5px 0.5px 1px #014038, /* Bottom-right base shadow */ - -0.5px -0.5px 1px #014038, /* Top-left base shadow */ - -0.5px 0.5px 1px #014038, /* Bottom-left base shadow */ - 0.5px -0.5px 1px #014038, /* Top-right base shadow */ - 0.5px 0.5px .5px #bdd4da, /* Bottom-right mid shadow */ - -0.5px -0.5px .5px #bdd4da, /* Top-left mid shadow */ - -0.5px 0.5px .5px #bdd4da, /* Bottom-left mid shadow */ - 0.5px -0.5px .5px #bdd4da, /* Top-right mid shadow */ - 0.5px 0.5px .5px #f7f7f7, /* Bottom-right top shadow */ - -0.5px -0.5px .5px #f7f7f7, /* Top-left top shadow */ - -0.5px 0.5px .5px #f7f7f7, /* Bottom-left top shadow */ - 0.5px -0.5px .5px #f7f7f7; /* Top-right top shadow */ - color: #f7f7f7; - background-color: #96baa0; - border: solid #f7f7f7; - border-radius: 10px; - padding-left: 20px; - transform: translateX(30px); - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#featured-container ul { - list-style-type: none; - display: flex; - flex-direction: column; -} - -#featured-image ul li { - align-content: space-between; -} - -#featured-images ul li a { - color: #014038; - background-color: #f7f7f7; - border-radius: 10px; - padding: 5px 10px; -} - -#featured-images a { - display: block; - text-align: center; - font-size: 1.4rem; - color:#014038; -} - -#featured-images img { - display: block; - margin: 0 auto; - margin-bottom: 10px; - margin-right: 45px; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#testimonials-feature{ - background-color: #96baa0; - color: #014038; - border: solid #014038; - border-radius: 10px; - padding: 5px 10px; - margin-top: 10px; - white-space: wrap; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#testimonials-feature h2 { - font-size: 1.675rem; - text-align: center; -} - -.testimonial { - background-color: #f7f7f7; - color: #014038; - border: solid #014038; - border-radius: 5px; - padding: 5px 10px; - white-space: wrap; - min-height: 250px; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); - text-align: center; -} - -#right-aside { - display: flex; - flex-direction: column; - align-items: center; - background-color: #f0c06d; - width: 100%; - height: auto; - padding: 5px 10px; - margin-left: 40px; - margin-top: 10px; - border: solid #f7f7f7; - border-radius: 10px; -} - -#category-nav-container { - background-color: #f7f7f7; - color: #014038; - border: solid #014038; - border-radius: 10px; - padding: 5px 10px; - margin-top: 5px; - text-align: center; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#right-aside h2 { - font-size: 1.675rem; - background-color: #bdd4da; - color: #014038; - border: solid #014038; - border-radius: 10px; - padding: 0 5px; - white-space: nowrap; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -.categories ul { - display: flex; - flex-direction: column; - align-items: center; - list-style-type: none; -} - -.categories ul li { - border: solid #014038; - border-radius: 10px; - background-color: #96baa0; - margin-top: 20px; - margin-right: 35px; - min-width: 100%; - transition: background-color 0.3s ease, color 0.3s ease; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -.categories a { - color: #014038; - font-size: 1.3rem; - font-weight: bold; - transition: background-color 0.3s ease, color 0.3s ease; - -} - -.categories ul li:hover { - background-color: #f7f7f7; - color: #014038; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#footer { - display: flex; - flex-direction: column; - align-items: center; - justify-content: center; - text-align: center; -} - -#newsletter-container { - display: inline-block; - margin-bottom: 10px; - text-align: center; -} - -#email-input { - display: inline-block; - width: 55%; - padding: 5px 10px; - text-align: center; - border-radius: 10px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -button#submit-btn { - display: inline-block; - padding: 5px 10px; - border-radius: 10px; - cursor: pointer; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); - z-index: 5; -} - -footer div label { - font-size: 1.2rem; - font-weight: bold; - color: #014038 -} - -#newsletter-form { - display: inline-block; - background-color: #f0c06d; - border: solid #f7f7f7; - border-radius: 10px; - width: 60%; - padding: 5px; - text-align: center; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#footer-nav ul { - position: relative; - list-style-type: none; - display: inline-block; - flex-direction: row; - margin-top: 20px; - background-color: #f7f7f7; /* White for navigation background */ - padding: 5px 20px; - border-radius: 5px; - width: 100%; /* Ensures the nav spans the width of the header */ - box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Adds subtle shadow for depth */ -} - -#footer-nav ul li { - display: inline-block; - align-items: center; - padding: 5px 10px; - margin: 0 20px; -} - -#footer-nav ul li .current-page { - font-size: 1.2em; - font-weight: bold; - color: #014038; - background-color: #96baa0; - text-decoration: underline; -} - -#footer-nav ul li a { - font-family: 'Arial', sans-serif; - font-size: 1rem; - font-weight: bold; - color: #014038; /* Dark green for the links */ - text-decoration: none; - padding: 8px 15px; - border-radius: 5px; - transition: background-color 0.3s ease, color 0.3s ease; -} - -#footer-nav ul li a:hover { - background-color: #f7f7f7; - color: #014038; - border: solid #014038; - border-radius: 10px; -} - -#social-media { - position: relative; - display: flex; - flex-direction: column; - justify-content: center; - text-align: center; -} - -#social-media p { -text-align: center; -} - -#social-media ul { - position: relative; - display: inline-block; - list-style-type: none; - text-align: center; -} - -#social-media ul li { - display: inline-block; - margin: 0 10px; - padding: 0 10px; - color: #014038; -} - -#social-media ul li a { - font-family: 'Arial', sans-serif; - font-size: 1rem; - color: #014038; /* Dark green for the links */ - text-decoration: none; - padding: 8px 15px; - border-radius: 5px; - transition: background-color 0.3s ease, color 0.3s ease; -} - -#social-media ul li a:hover { - background-color: #f0c06d; - color: #f7f7f7; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); - -} - -#copyright { - text-align: center; - margin-bottom: 20px; -} - - -/* Styles for the modal */ -.modal { - display: none; /* Initially hidden */ - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; - background-color: rgba(0, 0, 0, 0.5); /* Semi-transparent background */ - justify-content: center; - align-items: center; - z-index: 1000; -} - -.modal-content { - background-color: #fff; - padding: 20px; - border-radius: 10px; - width: 80%; - max-width: 600px; - text-align: center; -} - -.modal-buttons button { - margin: 10px; -} - -.close-modal { - position: absolute; - top: 10px; - right: 20px; - font-size: 1.5rem; - cursor: pointer; -} - -.perk-item, -.testimonial, -.featured-item { - display: none; /* Hide all by default */ -} - -.perk-item.visible, -.testimonial.visible, -.featured-item.active { - display: block; /* Show visible or active items */ -} - -#featured-images { - overflow: hidden; /* Hide anything outside the container */ - text-align: center; /* Center align content if necessary */ - width: 100%; /* Match the width of the container */ - height: auto; /* Let the height adapt to content */ -} - -#featured-images img { - display: none; /* Hide all items initially */ - max-width: 100%; /* Ensure images are responsive */ - height: auto; /* Maintain aspect ratio */ - background-color: #96baa0; - border: solid #014038; - border-radius: 5px; - padding: 5px; -} - -.visible { - display: block; -} - - -/* |--↓-↓-↓ Start gallery.html ↓-↓-↓--| */ -#main-gallery { - display: flex; - flex-direction: column; - align-items: center; -} - -#gallery-top { - display: flex; - flex-direction: row; - align-items: center; - width: 95vw; - gap: 20px -} - -#product-carousel-feature h2 { - font-size: 1.875rem; - text-align: center; - text-shadow: 0.5px 0.5px 1px #014038, /* Bottom-right base shadow */ - -0.5px -0.5px 1px #014038, /* Top-left base shadow */ - -0.5px 0.5px 1px #014038, /* Bottom-left base shadow */ - 0.5px -0.5px 1px #014038, /* Top-right base shadow */ - 0.5px 0.5px .5px #bdd4da, /* Bottom-right mid shadow */ - -0.5px -0.5px .5px #bdd4da, /* Top-left mid shadow */ - -0.5px 0.5px .5px #bdd4da, /* Bottom-left mid shadow */ - 0.5px -0.5px .5px #bdd4da, /* Top-right mid shadow */ - 0.5px 0.5px .5px #f7f7f7, /* Bottom-right top shadow */ - -0.5px -0.5px .5px #f7f7f7, /* Top-left top shadow */ - -0.5px 0.5px .5px #f7f7f7, /* Bottom-left top shadow */ - 0.5px -0.5px .5px #f7f7f7; /* Top-right top shadow */ - color: #f7f7f7; - background-color: #96baa0; - border: solid #f7f7f7; - border-radius: 10px; - padding-left: 20px; - transform: translateX(30px); - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#product-category-card { - display: flex; - flex-direction: row; - align-items: center; - text-align: center; - width: 65vw; -} - -#product-carousel { - display: flex; /* Flexbox layout for horizontal row */ - gap: 20px; /* Space between product cards */ - overflow-x: auto; /* Enable horizontal scrolling */ - scroll-behavior: smooth; /* Smooth scrolling for buttons */ - padding: 10px; /* Optional padding inside the carousel */ - white-space: nowrap; /* Prevent wrapping to a new row */ - transform: translateX(4vw); -} - -.product-card { - display: inline-block; /* Ensure cards stay in a row */ - min-width: 150px; /* Set the card size */ - max-width: 200px; - max-height: auto; - flex: 0 0 auto; /* Prevent resizing of cards */ - border: 1px solid #ddd; /* Optional border */ - border-radius: 8px; - padding: 10px; - margin-left: 20px; - align-items: center; - text-align: center; - white-space: wrap; - background-color: #f7f7f7; /* Optional background */ -} - -.product-card img { - max-width: 100%; - height: auto; - display: block; - border-radius: 8px; - align-items: center; -} - -#scroll-left, #scroll-right { - cursor: pointer; /* Show pointer to indicate clickable buttons */ - background-color: #014038; /* Dark green background */ - color: white; - border: none; - padding: 10px; - border-radius: 50%; - font-size: 1.5rem; - transform: translateX(4.5vw); -} - -@media (max-width: 768px) { - .product-card { - min-width: 150px; - max-width: 200px; - } - - #product-carousel { - gap: 5px; - } -} - - -#main-gallery #right-aside { - width: 25vw; -} - -#main-gallery #right-aside h2 { - font-size: 1.675rem; - background-color: #bdd4da; - color: #014038; - border: solid #014038; - border-radius: 5px; - padding: 0 5px; - white-space: nowrap; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#main-gallery .categories ul { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - list-style-type: none; -} - -#main-gallery .categories ul li { - border: solid #014038; - border-radius: 5px; - background-color: #96baa0; - margin-top: 20px; - margin-right: 35px; - min-width: 100%; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); -} - -#main-gallery .categories a { - color: #014038; - font-size: 1.3rem; -} - -button#cart-details { - background-color: #f7f7f7; - border: solid #014038; - border-radius: 15px; - color: #014038; - font-weight: bold; - font-size: 1.4em; - text-align: center; /* Align text horizontally */ - height: 30px; /* Adjust height to fit text comfortably */ - padding: 0 15px; /* Horizontal padding for spacing */ - margin-top: 10px; - margin-bottom: 10px; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.3); - transform: translateX(-15vw) translateY(-5vh); - transition: background-color 0.3s ease, color 0.3s ease; - display: flex; /* Flexbox ensures content alignment */ - align-items: center; /* Center text vertically */ - justify-content: center; /* Center text horizontally */ -} - -button#cart-details:hover { - background-color: #014033; - color: #f7f7f7; - border: solid #f7f7f7; - border-radius: 15px; -} - -.product-card { - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.3); - transition: background-color 0.3s ease, color 0.3s ease; -} - -.add-to-cart-btn { - cursor: pointer; - background-color: #f7f7f7; - border: solid #014038; - color: #014038; - font-weight: bold; - border-radius: 5px; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); - transition: background-color 0.3s ease, color 0.3s ease; -} - -.add-to-cart-btn:hover { - background-color: #014038; - border: solid #f7f7f7; - color: #f7f7f7; - border-radius: 5px; - box-shadow: 1px 2px 3px 0.5px rgba(0, 0, 0, 0.5); - -} -/* |--↑-↑-↑ End gallery.html ↑-↑-↑--| */ - - -/* |--↓-↓-↓ Start about.html ↓-↓-↓--| */ -#about-page main { - display: flex; - flex-direction: column; - align-items: center; -} - -#main-top { - display: flex; - flex-direction: row; - justify-content: space-between; - width: 95vw; - position: center; -} - -#business-info { - display: block; - align-items: center; - width: 25vw; - background-color:#f0c06d; - border: solid #f7f7f7; - border-radius: 10px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); - -} - -#phone, -#hours { - background-color: #f7f7f7; - border: solid #bdd4da; - border-radius: 10px; - margin: 5px 10px; -} - - - -#business-info h3, -#feedback-intro h1 { -font-size: 1.875rem; -text-align: center; -text-shadow: 0.5px 0.5px 2px #014038, /* Bottom-right base shadow */ --0.5px -0.5px 2px #014038, /* Top-left base shadow */ --0.5px 0.5px 2px #014038, /* Bottom-left base shadow */ -0.5px -0.5px 2px #014038; /* Top-right base shadow */ -color: #f7f7f7; -background-color: #96baa0; -border: solid #f7f7f7; -max-width: 75vw; -border-radius: 10px; -padding-left: 10px; -transform: translateX(0px); -box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#business-info p { - text-align: center; - font-size: 14pt; -} - -#business-info h4 { - text-align: center; - background-color: #bdd4da; - border: solid #f7f7f7; - border-radius: 15px; - padding: 0 10px; - width: 50%; - margin-left: 22.5%; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -#story { - display: flex; - flex-direction: column; - align-items: center; - justify-content: left; - width: 70vw; - margin-left: 30px; -} - -#story h1 { - background-color: #96baa0; - color: #f7f7f7; - border: solid #f7f7f7; - border-radius: 15px; - text-shadow: 0.5px 0.5px 2px #014038, /* Bottom-right base shadow */ --0.5px -0.5px 2px #014038, /* Top-left base shadow */ --0.5px 0.5px 2px #014038, /* Bottom-left base shadow */ -0.5px -0.5px 2px #014038; /* Top-right base shadow */ - width: 50%; - padding: 5px 10px; - text-align: center; - margin-right: 12.5%; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#story p { - color: #014038; - font-size: 1.25rem; - font-weight: bold; -} - -#feedback { - display: flex; - flex-direction: column; - align-items: center; - justify-content: space-between; - background-color: #96baa0; - border: solid #f7f7f7; - border-radius: 15px; - width: 90vw; - margin-top: 30px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.5); -} - -#feedback h1 { - background-color: #a4ccd6; - border: solid #f7f7f7; - border-radius: 10px; - width: 50vw; - padding: 5px 10px; - text-align: center; - margin-left: 25vw; - margin-right: 25vw; - text-shadow: 0.5px 0.5px 2px #014038, /* Bottom-right base shadow */ - -0.5px -0.5px 2px #014038, /* Top-left base shadow */ - -0.5px 0.5px 2px #014038, /* Bottom-left base shadow */ - 0.5px -0.5px 2px #014038; /* Top-right base shadow */ - box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5); -} - -#feedback h3 { - color: #00231c; - font-weight: bold; - width: 85vw; - text-align: center; - margin-left: 7.5vw; - margin-right: 7.5vw; - -} - -#feedback p { - color: #00231c; - width: 85vw; - text-align: center; - margin-left: 7.5vw; - margin-right: 7.5vw; - font-weight: bold; -} - -#feedback-form form{ - display: flex; - flex-direction: row; - gap: 20px; - align-items: baseline; - width: 95%; - margin-top: 20px; /* Adds some spacing above the form */ -} - -#customer-info { - display: flex; - flex-direction: column; - align-content: center; - width: 95%; /* Adjusted width */ - gap: 25px; /* Adds spacing between input fields */ - text-align: center; -} - -#customer-info input { - background-color: #f7f7f7; - border: solid #014038; - border-radius: 15px; - width: 90%; /* Ensures the input fields fill the section width */ - height: 30px; /* Adjusts height to match the textarea */ - text-align: center; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.1); -} - -#customer-message { - display: flex; - flex-direction: column; - align-items: center; - width: 90%; /* Adjusted width */ -} - -#customer-message #message-field textarea { - width: 50vw; /* Takes full width of the section */ - height: 30vh; /* Adjust height as needed */ - background-color: #f7f7f7; - border: solid #014038; - border-radius: 15px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.1); -} - -#form-submit-btn { - display: flex; - justify-content: center; - margin-top: 10px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.1); -} - -#form-submit { - padding: 10px 20px; - background-color: #bdd4da; - border: solid #f7f7f7; - border-radius: 10px; - color: #014038; - font-size: 1rem; - cursor: pointer; - margin-bottom: 10px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.1); -} - -#form-submit:hover { - background-color: #f7f7f7; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.1); -} -/* | ↑-↑-↑ End About.html ↑-↑-↑--| */ - - - -/* |--↓-↓-↓ Start Community.html ↓-↓-↓--| */ -#community-page { - display: flex; - flex-direction: column; - text-align: center; - align-items: center; - gap: 20px; - width: 95vh; - height: auto; -} - -#community-page h1 { - font-size: 1.6rem; - background-color: #96baa0; - border: solid #f7f7f7; - border-radius: 15px; - width: 50vw; - color: #f7f7f7; - text-decoration: underline; - text-shadow: 0.5px 0.5px 1px #014038, /* Bottom-right base shadow */ - -0.5px -0.5px 1px #014038, /* Top-left base shadow */ - -0.5px 0.5px 1px #014038, /* Bottom-left base shadow */ - 0.5px -0.5px 1px #014038; /* Top-right base shadow */ - padding: 5px 10px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -#calendar-events-container { - display: flex; - flex-direction: column; - align-items: center; - gap: 20px; - border: none; -} -.calendar iframe{ - width: 80vw; - height: auto; - margin-bottom: 20px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -.events { - background-color: #f0c06d; - border: solid #014038; - border-radius: 15px; - padding: 10px; - width: 95vw; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -.events h2 { - background-color: #96baa0; - border: solid #f7f7f7; - border-radius: 15px; - padding: 10px 15px; - width: 50vw; - text-decoration: underline; - font-weight: bold; - font-size: 1.4rem; - text-align: center; - margin-left: 20vw; - transform: translateY(-6vh); - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -.events h3 { - background-color: #96baa080; - border: solid #bdd4da; - border-radius: 15px; - padding: 5px 10px; - width: 50vw; - text-decoration: underline; - font-weight: bold; - font-size: 1.2rem; - text-align: center; - margin-left: 20vw; - transform: translateY(-5vh); - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -.events p { - transform: translateY(-5vh); -} - -.event-list ul { - list-style-type: none; - transform: translateY(-5vh); -} - -.event-list li { - background-color: #f7f7f7; - border: solid #bdd4da; - border-radius: 15px; - text-align: center; - padding: 5px 10px; - margin-bottom: 10px; - box-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3); -} - -.events strong { - color:#014038; - font-size: 1.1rem; -} - -/* | ↑-↑-↑ End Community.html ↑-↑-↑--| */ \ No newline at end of file