Compare commits

...

2 Commits

Author SHA1 Message Date
Derek L. Seitz de71b2d663 refactor: Format site files for 11ty
- Convert HTML pages into NJK templates
- Add front matter to NJK templates
- Modularize monolithic stylesheet
2025-08-18 23:28:46 -05:00
Derek L. Seitz c9c5b89736 Refactor: Reconfigured Directory Structure & Installed 11ty
This commit refactors the project's directory structure to better align with a static site generator (SSG) workflow. The source files have been moved into a dedicated src directory, and Eleventy has been installed as the new SSG.
2025-08-18 20:18:19 -05:00
153 changed files with 6628 additions and 1442 deletions

14
.eleventy.js Normal file
View File

@ -0,0 +1,14 @@
module.exports = function (eleventyConfig) {
// ✅ Pass through static assets to the root of output
eleventyConfig.addPassthroughCopy({ "src/images": "images" });
eleventyConfig.addPassthroughCopy({ "src/styles": "styles" });
eleventyConfig.addPassthroughCopy({ "src/scripts": "scripts" });
return {
dir: {
input: "src",
output: "_site",
includes: "_includes",
},
};
};

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
node_modules/

View File

@ -1 +0,0 @@

282
_site/about/index.html Normal file
View File

@ -0,0 +1,282 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Demo eCommerce website by Derek L. Seitz - dlseitz.dev">
<title>About - Bloom Valley Nursery Demo</title>
<link rel="stylesheet" href="/styles/variables.css">
<link rel="stylesheet" href="/styles/base.css">
<link rel="stylesheet" href="/styles/header-footer.css">
<link rel="stylesheet" href="/styles/about.css">
<script src="https://kit.fontawesome.com/abc7c3b0da.js" crossorigin="anonymous"></script>
</head>
<body>
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="/" aria-current="page" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<main>
<div id="main-top">
<aside
id="business-info"
aria-label="Hours of operation and contact info"
>
<h3>Contact Us</h3>
<div id="phone">
<h4><strong>Phone:</strong></h4>
<p>(555) 123-4567</p>
</div>
<h3>Hours of Operation</h3>
<div id="hours">
<h4><strong>Monday - Friday:</strong></h4>
<p>9:00 AM - 6:00 PM</p>
<h4><strong>Saturday & Sunday:</strong></h4>
<p>10:00 AM - 5:00 PM</p>
</div>
</aside>
<div id="story" aria-label="History of Bloom Valley Nursery">
<h1>The Story of Bloom Valley</h1>
<p>
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.
</p>
<p>
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.
</p>
<p>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!</p>
</div>
</div>
<div id="main-bottom">
<div id="feedback" aria-label="Feedback form">
<div id="feedback-intro">
<h1>We Want to Hear From You!</h1>
<h3>Your feedback provides us with valuable insight into where we stand in our commitment to our neighbors, friends, and the entire Bloom Valley community.</h3>
<p>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!</p>
</div>
<div id="feedback-form">
<form action="#" method="POST">
<div id="customer-info">
<div id="name-field">
<label for="name">Name:</label>
<input
type="text"
id="name"
name="name"
aria-label="Enter your name here" placeholder="Your Name"
required/>
</div>
<div id="phone-field">
<label for="tel">Phone Number:</label>
<input
type="tel"
id="tel"
name="telephone"
aria-label="Enter your contact phone number here" placeholder="Your Phone Number"
required/>
</div>
<div id="email-field">
<label for="email">Email:</label>
<input
type="email"
id="email"
name="email"
aria-label="Enter your contact email here" placeholder="user@domain.com"
required/>
</div>
</div>
<div id="customer-message">
<div id="message-field">
<label for="message">Message:</label>
<textarea
id="message"
name="message"
rows="5"
aria-label="Enter feedback or inquiries here" placeholder="Enter feedback or inquiries here..."
required>
</textarea>
</div>
<div id="form-submit-btn">
<button
id="form-submit"
type="submit"
aria-label="Submit feedback or inquiry"
>Submit
</button>
</div>
</div>
</form>
</div>
</div>
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="/" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy; 2025, Derek L. Seitz, <a href="https://dlseitz.dev">dlseitz.dev.</a></div>
</footer>
<!-- Custom Newsletter Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- <a href="https://www.svgbackgrounds.com/set/free-svg-backgrounds-and-patterns/">Free SVG Backgrounds and Patterns by SVGBackgrounds.com</a> -->
<script src="/scripts/feedback.js"></script>
<script src="/scripts/cart.js"></script>
<script src="/scripts/newsletter.js"></script>
</body>
</html>

264
_site/community/index.html Normal file
View File

@ -0,0 +1,264 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Demo eCommerce website by Derek L. Seitz - dlseitz.dev">
<title>Community Events - Bloom Valley Nursery Demo</title>
<link rel="stylesheet" href="/styles/variables.css">
<link rel="stylesheet" href="/styles/base.css">
<link rel="stylesheet" href="/styles/header-footer.css">
<link rel="stylesheet" href="/styles/community.css">
<script src="https://kit.fontawesome.com/abc7c3b0da.js" crossorigin="anonymous"></script>
</head>
<body>
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="/" aria-current="page" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<main>
<h1>Mark Your Calendars!</h1>
<div id="calendar-events-container">
<div class="calendar">
<iframe
src="https://calendar.google.com/calendar/embed?src=your_calendar_id&ctz=America/Chicago"
style="border: 0; width: 90vww; height: 600px"
frameborder="0"
scrolling="no" aria-label="Google Calendar displaying upcoming events at Bloom Valley Nursery">
</iframe><!-- change "your_calendar_id" to an actual Google Calendar ID (Not possible due to the Client Scenario being fictional. This would require creating a fake Google account.)-->
</div>
<section class="events" aria-label="List of upcoming local events">
<h2>Upcoming Events</h2>
<div class="event-list">
<div id="bvn-events">
<h3>Events at Bloom Valley Nursery</h3>
<p>
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.
</p>
<ul>
<li>
<strong>Gardening and Landscaping 101:</strong><br><strong>When:</strong><br> 2nd Tuesday of
Every Month @ 6:30 pm.<br>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.
</li>
<li>
<strong>Deck the Halls</strong><br><strong>When:</strong> Saturday @ 10:00 am.<br>Join
Nathaniel and Vincent as they guide us through picking and tending
the perfect live Christmas tree for your Christmas decoration
focal-point.
</li>
<li>
<strong>Christmas Eve and Christmas Day</strong><br><strong>Bloom Valley
Nursery will close on Christmas Eve at 8:00 pm</strong> for any last-minute
shopping.<br>The nursery will remain <strong>closed until January 2nd</strong>. 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!<br><strong>Happy Holidays!!!</strong>
</li>
</ul>
</div>
<div id="community-wide">
<h3>Community-Wide Events</h3>
<p>
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.
</p>
<ul>
<li>
<strong>Tree Lighting Ceremony</strong><br><strong>When:</strong></br>Thursday @ 6:00 pm.<br>
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 <strong>in front of City Hall</strong> 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!
</li>
</ul>
</div>
<!-- Add more events as needed -->
</div>
</div>
</section>
<p>
For more details, to add events to this page, or to leave feedback,
<a
href="/about/#feedback"
aria-label="Go to the feedback form on the About Us page to leave feedback or inquiries."
>click here</a
> to send us a message.
</p>
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="/" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy; 2025, Derek L. Seitz, <a href="https://dlseitz.dev">dlseitz.dev.</a></div>
</footer>
<!-- Custom Newsletter Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- <a href="https://www.svgbackgrounds.com/set/free-svg-backgrounds-and-patterns/">Free SVG Backgrounds and Patterns by SVGBackgrounds.com</a> -->
<script src="/scripts/cart.js"></script>
<script src="/scripts/newsletter.js"></script>
</body>
</html>

227
_site/gallery/index.html Normal file
View File

@ -0,0 +1,227 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Demo eCommerce website by Derek L. Seitz - dlseitz.dev">
<title>Gallery - Bloom Valley Nursery Demo</title>
<link rel="stylesheet" href="/styles/variables.css">
<link rel="stylesheet" href="/styles/base.css">
<link rel="stylesheet" href="/styles/header-footer.css">
<link rel="stylesheet" href="/styles/gallery.css">
<script src="https://kit.fontawesome.com/abc7c3b0da.js" crossorigin="anonymous"></script>
</head>
<body>
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="/" aria-current="page" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<main>
<div id="gallery-top">
<section id="product-carousel-feature" aria-label="Interactive Carousel of Available Products by Category.">
<h2>Products by Category</h2>
<div id="product-category-card">
<button
id="scroll-left"
aria-label="Scroll products left"
aria-controls="product-carousel"
class="fa-solid fa-chevron-left"
>
</button>
<div id="product-carousel">
<div id="product-list"><!--Product Cards will be dynamically inserted here--></div>
</div>
<button
id="scroll-right"
aria-label="Scroll products right"
aria-controls="product-carousel"
class="fa-solid fa-chevron-right"
>
</button>
</div>
</section>
<aside id="right-aside">
<div id="category-nav-container" aria-label="Available Product Categories">
<h2>Shop by Category</h2>
<div class="categories">
<ul>
<li><a href="/gallery/?category=trees#" class="cat-btn">Trees</a></li>
<li><a href="/gallery/?category=trees#" class="cat-btn">Shrubs</a></li>
<li><a href="/gallery/?category=indoor#" class="cat-btn">Indoor</a></li>
<li><a href="/gallery/?category=indoor#" class="cat-btn">Patio</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Tools</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Accessories</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Landscaping</a></li>
</ul>
</div>
</div>
</aside>
</div>
<div id="gallery-bottom">
<button id="cart-details">View Shopping Cart</button>
</div>
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="/" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy; 2025, Derek L. Seitz, <a href="https://dlseitz.dev">dlseitz.dev.</a></div>
</footer>
<!-- Custom Newsletter Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- <a href="https://www.svgbackgrounds.com/set/free-svg-backgrounds-and-patterns/">Free SVG Backgrounds and Patterns by SVGBackgrounds.com</a> -->
<script src="/scripts/gallery-carousel.js"></script>
<script src="/scripts/script.js"></script>
<script src="/scripts/cart.js"></script>
<script src="/scripts/newsletter.js"></script>
</body>
</html>

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 73 KiB

After

Width:  |  Height:  |  Size: 73 KiB

View File

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

View File

Before

Width:  |  Height:  |  Size: 55 KiB

After

Width:  |  Height:  |  Size: 55 KiB

View File

Before

Width:  |  Height:  |  Size: 38 KiB

After

Width:  |  Height:  |  Size: 38 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 70 KiB

After

Width:  |  Height:  |  Size: 70 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 110 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View File

Before

Width:  |  Height:  |  Size: 123 KiB

After

Width:  |  Height:  |  Size: 123 KiB

View File

Before

Width:  |  Height:  |  Size: 175 KiB

After

Width:  |  Height:  |  Size: 175 KiB

View File

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 213 KiB

View File

Before

Width:  |  Height:  |  Size: 228 KiB

After

Width:  |  Height:  |  Size: 228 KiB

View File

Before

Width:  |  Height:  |  Size: 221 KiB

After

Width:  |  Height:  |  Size: 221 KiB

View File

Before

Width:  |  Height:  |  Size: 189 KiB

After

Width:  |  Height:  |  Size: 189 KiB

View File

Before

Width:  |  Height:  |  Size: 203 KiB

After

Width:  |  Height:  |  Size: 203 KiB

View File

Before

Width:  |  Height:  |  Size: 166 KiB

After

Width:  |  Height:  |  Size: 166 KiB

View File

Before

Width:  |  Height:  |  Size: 165 KiB

After

Width:  |  Height:  |  Size: 165 KiB

View File

Before

Width:  |  Height:  |  Size: 162 KiB

After

Width:  |  Height:  |  Size: 162 KiB

View File

Before

Width:  |  Height:  |  Size: 159 KiB

After

Width:  |  Height:  |  Size: 159 KiB

View File

Before

Width:  |  Height:  |  Size: 193 KiB

After

Width:  |  Height:  |  Size: 193 KiB

View File

Before

Width:  |  Height:  |  Size: 188 KiB

After

Width:  |  Height:  |  Size: 188 KiB

View File

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 256 KiB

View File

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 191 KiB

View File

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 282 KiB

View File

Before

Width:  |  Height:  |  Size: 213 KiB

After

Width:  |  Height:  |  Size: 213 KiB

View File

Before

Width:  |  Height:  |  Size: 177 KiB

After

Width:  |  Height:  |  Size: 177 KiB

View File

Before

Width:  |  Height:  |  Size: 235 KiB

After

Width:  |  Height:  |  Size: 235 KiB

View File

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

View File

Before

Width:  |  Height:  |  Size: 210 KiB

After

Width:  |  Height:  |  Size: 210 KiB

View File

Before

Width:  |  Height:  |  Size: 212 KiB

After

Width:  |  Height:  |  Size: 212 KiB

View File

Before

Width:  |  Height:  |  Size: 216 KiB

After

Width:  |  Height:  |  Size: 216 KiB

View File

Before

Width:  |  Height:  |  Size: 282 KiB

After

Width:  |  Height:  |  Size: 282 KiB

View File

Before

Width:  |  Height:  |  Size: 158 KiB

After

Width:  |  Height:  |  Size: 158 KiB

View File

Before

Width:  |  Height:  |  Size: 286 KiB

After

Width:  |  Height:  |  Size: 286 KiB

View File

Before

Width:  |  Height:  |  Size: 255 KiB

After

Width:  |  Height:  |  Size: 255 KiB

View File

Before

Width:  |  Height:  |  Size: 241 KiB

After

Width:  |  Height:  |  Size: 241 KiB

View File

Before

Width:  |  Height:  |  Size: 184 KiB

After

Width:  |  Height:  |  Size: 184 KiB

View File

Before

Width:  |  Height:  |  Size: 191 KiB

After

Width:  |  Height:  |  Size: 191 KiB

View File

Before

Width:  |  Height:  |  Size: 168 KiB

After

Width:  |  Height:  |  Size: 168 KiB

View File

Before

Width:  |  Height:  |  Size: 259 KiB

After

Width:  |  Height:  |  Size: 259 KiB

View File

Before

Width:  |  Height:  |  Size: 232 KiB

After

Width:  |  Height:  |  Size: 232 KiB

View File

Before

Width:  |  Height:  |  Size: 88 KiB

After

Width:  |  Height:  |  Size: 88 KiB

View File

Before

Width:  |  Height:  |  Size: 256 KiB

After

Width:  |  Height:  |  Size: 256 KiB

View File

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

Before

Width:  |  Height:  |  Size: 127 KiB

After

Width:  |  Height:  |  Size: 127 KiB

View File

Before

Width:  |  Height:  |  Size: 83 KiB

After

Width:  |  Height:  |  Size: 83 KiB

View File

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 91 KiB

View File

Before

Width:  |  Height:  |  Size: 87 KiB

After

Width:  |  Height:  |  Size: 87 KiB

View File

Before

Width:  |  Height:  |  Size: 107 KiB

After

Width:  |  Height:  |  Size: 107 KiB

View File

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 106 KiB

View File

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 50 KiB

View File

Before

Width:  |  Height:  |  Size: 201 KiB

After

Width:  |  Height:  |  Size: 201 KiB

266
_site/index.html Normal file
View File

@ -0,0 +1,266 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="Demo eCommerce website by Derek L. Seitz - dlseitz.dev">
<title>Landing - Bloom Valley Nursery Demo</title>
<link rel="stylesheet" href="/styles/variables.css">
<link rel="stylesheet" href="/styles/base.css">
<link rel="stylesheet" href="/styles/header-footer.css">
<link rel="stylesheet" href="/styles/index.css">
<script src="https://kit.fontawesome.com/abc7c3b0da.js" crossorigin="anonymous"></script>
</head>
<body>
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="/" aria-current="page" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<main>
<!-- Main Content Section -->
<aside id="left-aside">
<div id="perks-feature-container" aria-label="Reasons for Shopping With Bloom Valley Nursery">
<h2 id="perks-heading">Shopper Perks</h2>
<div class="perk-item" aria-label="Perk">
<h3>- 50% Off Deal -</h3>
<p>New subscribers to our newsletter this month will receive a coupon for 50% off their first purchase! Click here for details! Terms and conditions apply.</p>
</div>
<div class="perk-item" aria-label="Perk">
<h3>Exceptional Quality</h3>
<p>Every plant is carefully cultivated from seed or bulb to maturity, offering you vibrant, healthy specimens.</p>
</div>
<div class="perk-item" aria-label="Perk">
<h3>Expert Guidance</h3>
<p>Our knowledgeable team is here to help, from selecting the perfect plants to offering planting tips.</p>
</div>
<div class="perk-item" aria-label="Perk">
<h3>Eco-Friendly Practices</h3>
<p>We prioritize sustainability by using environmentally conscious growing methods, so you can feel good about your choices.</p>
</div>
</div>
<div id="testimonials-feature" aria-label="Customer Testimonials About Their Experience With Bloom Valley Nursery.">
<h2>What Others Say</h2>
<div class="testimonial-container">
<div class="testimonial" aria-label="Customer Testimonial.">
<p>"My order arrived the very next day. The speed of delivery and high-quality products provided by Bloom Valley Nursery helped my project go smoothly from start to finish!"</p>
<h3>- Caroline N.</h3>
</div>
<div class="testimonial" aria-label="Customer Testimonial.">
<p>"Thanks to the Gardening 101 Workshop with Bethany and Bloom Valley Nursery's amazing line of products, I won 'Best Azaleas' at the 2024 Royal Horticultural Society's American Cup!"</p>
<h3>- Morris F.</h3>
</div>
<div class="testimonial" aria-label="Customer Testimonial.">
<p>"Bloom Valley Nursery's community garden inspired me take charge of my health. I was able to lose 50 pounds!"</p>
<h3>- Gladis B.</h3>
</div>
</div> </div>
</aside>
<!--<div id="featured-images">
<div class="featured-item">
<img src="image1.jpg" alt="Feature 1">
</div>-->
<section id="featured-container" aria-label="Featured items of the week">
<h2> This Week's Featured Items</h2>
<ul id="featured-images" aria-label="Images of this week's featured items">
<li><a href="/gallery/" id="featured-aloe-plant">
<img src="images/indoor/AloePlant.png" alt="An Aloe Vera plant in a turquoise ceramic planter." class="featured-item">Aloe Vera / Turquoise Planter</a></li>
<li><a href="/gallery/" id="featured-bird-house">
<img src="images/accessories/BirdHouse.png" alt="A handmade wooden birdhouse painted blue." class="featured-item">Handmade Wooden Birdhouse - Blue</a></li>
<li><a href="/gallery/" id="featured-apple-tree">
<img src="images/trees/AppleTree.png" alt="A Red Gala apple sapling in a burlap wrap." class="featured-item">Red Gala Apple Sapling - Burlap Bound</a></li>
<li><a href="/gallery/" id="featured-potting-soil">
<img src="images/accessories/PottingSoil.png" alt="A 10 lbs bag of potting soil." class="featured-item">Potting Soil - 10 lbs Bag</a></li>
<li><a href="/gallery/" id="featured-spider-plant">
<img src="images/indoor/SpiderPlant.png" alt="A Spider plant in a light gray ceramic planter." class="featured-item">Spider Plant / Light Gray Planter</a></li>
<li><a href="/gallery/" id="featured-birch-tree">
<img src="images/trees/BirchTree.png" alt="A Silver Birch sapling in a disposable plastic container." class="featured-item">Silver Birch Sapling - Containerized</a></li>
<li><a href="/gallery/" id="featured-watering-can">
<img src="images/accessories/WateringCan.png" alt="A blue painted aluminum watering can." class="featured-item">Painted Aluminum Watering Can - Blue</a></li>
<li><a href="/gallery/" id="featured-string-of-pearls">
<img src="images/indoor/StringofPearls.png" alt="String-of-pearls plant in hanging white ceramic planter." class="featured-item">String-of-Pearls Plant / Hanging White Planter</a></li>
<li><a href="/gallery/" id="featured-maple-tree">
<img src="images/trees/MapleTree.png" alt="A Japanese Maple sapling in a burlap wrap." class="featured-item">Japanese Maple Sapling - Burlap Bound</a></li>
</ul>
</section>
<aside id="right-aside">
<div id="category-nav-container" aria-label="Available Product Categories">
<h2>Shop by Category</h2>
<div class="categories">
<ul>
<li><a href="/gallery/?category=trees#" class="cat-btn">Trees</a></li>
<li><a href="/gallery/?category=shrubs#" class="cat-btn">Shrubs</a></li>
<li><a href="/gallery/?category=indoor#" class="cat-btn">Indoor</a></li>
<li><a href="/gallery/?category=patio#" class="cat-btn">Patio</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Tools</a></li>
<li><a href="/gallery/?category=accessories#" class="cat-btn">Accessories</a></li>
<li><a href="/gallery/?category=landscaping#" class="cat-btn">Landscaping</a></li>
</ul>
</div>
</div>
</aside>
<!-- Content specific to this page goes here -->
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="/" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy; 2025, Derek L. Seitz, <a href="https://dlseitz.dev">dlseitz.dev.</a></div>
</footer>
<!-- Custom Newsletter Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- <a href="https://www.svgbackgrounds.com/set/free-svg-backgrounds-and-patterns/">Free SVG Backgrounds and Patterns by SVGBackgrounds.com</a> -->
<script src="/scripts/script.js"></script>
<script src="/scripts/cart.js"></script>
<script src="/scripts/newsletter.js"></script>
</body>
</html>

217
_site/styles/about.css Normal file
View File

@ -0,0 +1,217 @@
/* |--↓-↓-↓ 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 ↑-↑-↑--| */

87
_site/styles/base.css Normal file
View File

@ -0,0 +1,87 @@
* 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 */
}
/* 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;
}

105
_site/styles/community.css Normal file
View File

@ -0,0 +1,105 @@
/* |--↓-↓-↓ 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 ↑-↑-↑--| */

194
_site/styles/gallery.css Normal file
View File

@ -0,0 +1,194 @@
/* |--↓-↓-↓ 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 ↑-↑-↑--| */

View File

@ -0,0 +1,333 @@
/* |--↓-↓-↓ 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);
}
/* |--↓-↓-↓ Start Footer ↓-↓-↓--| */
#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;
}

216
_site/styles/index.css Normal file
View File

@ -0,0 +1,216 @@
#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);
}

View File

View File

@ -1,275 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="Bloom Valley Nursery offers a variety of plants, garden tools, and expert gardening advice for your home and garden."
/>
<script
src="https://kit.fontawesome.com/acb7c3b0da.js"
crossorigin="anonymous"
></script>
<title>About Us - Bloom Valley Nursery</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body id="about-page">
<!-- Header Section -->
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="index.html">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li><a href="about.html" aria-current="page" class="current-page">About Us</a></li>
<li><a href="community.html">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<!-- Main Content Section -->
<main role="main" id="main-about">
<div id="main-top">
<aside
id="business-info"
aria-label="Hours of operation and contact info"
>
<h3>Contact Us</h3>
<div id="phone">
<h4><strong>Phone:</strong></h4>
<p>(555) 123-4567</p>
</div>
<h3>Hours of Operation</h3>
<div id="hours">
<h4><strong>Monday - Friday:</strong></h4>
<p>9:00 AM - 6:00 PM</p>
<h4><strong>Saturday & Sunday:</strong></h4>
<p>10:00 AM - 5:00 PM</p>
</div>
</aside>
<div id="story" aria-label="History of Bloom Valley Nursery">
<h1>The Story of Bloom Valley</h1>
<p>
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.
</p>
<p>
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.
</p>
<p>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!</p>
</div>
</div>
<div id="main-bottom">
<div id="feedback" aria-label="Feedback form">
<div id="feedback-intro">
<h1>We Want to Hear From You!</h1>
<h3>Your feedback provides us with valuable insight into where we stand in our commitment to our neighbors, friends, and the entire Bloom Valley community.</h3>
<p>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!</p>
</div>
<div id="feedback-form">
<form action="#" method="POST">
<div id="customer-info">
<div id="name-field">
<label for="name">Name:</label>
<input
type="text"
id="name"
name="name"
aria-label="Enter your name here" placeholder="Your Name"
required/>
</div>
<div id="phone-field">
<label for="tel">Phone Number:</label>
<input
type="tel"
id="tel"
name="telephone"
aria-label="Enter your contact phone number here" placeholder="Your Phone Number"
required/>
</div>
<div id="email-field">
<label for="email">Email:</label>
<input
type="email"
id="email"
name="email"
aria-label="Enter your contact email here" placeholder="user@domain.com"
required/>
</div>
</div>
<div id="customer-message">
<div id="message-field">
<label for="message">Message:</label>
<textarea
id="message"
name="message"
rows="5"
aria-label="Enter feedback or inquiries here" placeholder="Enter feedback or inquiries here..."
required>
</textarea>
</div>
<div id="form-submit-btn">
<button
id="form-submit"
type="submit"
aria-label="Submit feedback or inquiry"
>Submit
</button>
</div>
</div>
</form>
</div>
</div>
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li><a href="about.html" class="current-page">About Us</a></li>
<li><a href="community.html">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy 2024 Bloom Valley Nursery</div>
</footer>
<!-- Custom Modal for Newsletter Subscription -->
<div id="newsletter-modal" class="modal">
<div class="modal-content">
<span class="close-modal" id="newsletter-close-btn">&times;</span>
<h2>Newsletter Subscription</h2>
<form id="newsletter-form">
<input
type="email"
id="email-input"
placeholder="Enter your email"
required
aria-label="Enter your email to subscribe"
/>
<button type="submit" id="subscribe-btn">Subscribe</button>
</form>
</div>
</div>
<!-- Custom Alert Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- This loads after the page is read by browser -->
<script src="cart.js"></script>
<script src="newsletter.js"></script>
<script src="feedback.js"></script>
</body>
</html>

View File

@ -1,256 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="Bloom Valley Nursery offers a variety of plants, garden tools, and expert gardening advice for your home and garden."
/>
<script
src="https://kit.fontawesome.com/acb7c3b0da.js"
crossorigin="anonymous"
></script>
<title>Community Events - Bloom Valley Nursery</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<!-- Header Section -->
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"
/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="community.html" aria-current="page" class="current-page">Community Events</a></li>
</ul>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl"
></button>
</nav>
</header>
<!-- Main Content Section -->
<main role="main" id="community-page">
<h1>Mark Your Calendars!</h1>
<div id="calendar-events-container">
<div class="calendar">
<iframe
src="https://calendar.google.com/calendar/embed?src=your_calendar_id&ctz=America/Chicago"
style="border: 0; width: 90vww; height: 600px"
frameborder="0"
scrolling="no" aria-label="Google Calendar displaying upcoming events at Bloom Valley Nursery">
</iframe><!-- change "your_calendar_id" to an actual Google Calendar ID (Not possible due to the Client Scenario being fictional. This would require creating a fake Google account.)-->
</div>
<section class="events" aria-label="List of upcoming local events">
<h2>Upcoming Events</h2>
<div class="event-list">
<div id="bvn-events">
<h3>Events at Bloom Valley Nursery</h3>
<p>
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.
</p>
<ul>
<li>
<strong>Gardening and Landscaping 101:</strong><br><strong>When:</strong><br> 2nd Tuesday of
Every Month @ 6:30 pm.<br>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.
</li>
<li>
<strong>Deck the Halls</strong><br><strong>When:</strong> Saturday @ 10:00 am.<br>Join
Nathaniel and Vincent as they guide us through picking and tending
the perfect live Christmas tree for your Christmas decoration
focal-point.
</li>
<li>
<strong>Christmas Eve and Christmas Day</strong><br><strong>Bloom Valley
Nursery will close on Christmas Eve at 8:00 pm</strong> for any last-minute
shopping.<br>The nursery will remain <strong>closed until January 2nd</strong>. 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!<br><strong>Happy Holidays!!!</strong>
</li>
</ul>
</div>
<div id="community-wide">
<h3>Community-Wide Events</h3>
<p>
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.
</p>
<ul>
<li>
<strong>Tree Lighting Ceremony</strong><br><strong>When:</strong></br>Thursday @ 6:00 pm.<br>
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 <strong>in front of City Hall</strong> 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!
</li>
</ul>
</div>
<!-- Add more events as needed -->
</div>
</div>
</section>
<p>
For more details, to add events to this page, or to leave feedback,
<a
href="about.html#feedback"
aria-label="Go to the feedback form on the About Us page to leave feedback or inquiries."
>click here</a
> to send us a message.
</p>
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="community.html" class="current-page">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy 2024 Bloom Valley Nursery</div>
</footer>
<!-- Custom Modal for Newsletter Subscription -->
<div id="newsletter-modal" class="modal">
<div class="modal-content">
<span class="close-modal" id="newsletter-close-btn">&times;</span>
<h2>Newsletter Subscription</h2>
<form id="newsletter-form">
<input
type="email"
id="email-input"
placeholder="Enter your email"
required
aria-label="Enter your email to subscribe"
/>
<button type="submit" id="subscribe-btn">Subscribe</button>
</form>
</div>
</div>
<!-- Custom Alert Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- This loads after the page is read by browser -->
<script src="cart.js"></script>
<script src="newsletter.js"></script>
</body>
</html>

View File

@ -1,219 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="Bloom Valley Nursery offers a variety of plants, garden tools, and expert gardening advice for your home and garden."
/>
<script
src="https://kit.fontawesome.com/acb7c3b0da.js"
crossorigin="anonymous"
></script>
<title>Gallery - Bloom Valley Nursery</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<!-- Header Section -->
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="index.html">Home</a></li>
<li><a href="gallery.html" aria-current="page" class="current-page">Gallery</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="community.html">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<!-- Main Content Section -->
<main role="main" id="main-gallery">
<div id="gallery-top">
<section id="product-carousel-feature" aria-label="Interactive Carousel of Available Products by Category.">
<h2>Products by Category</h2>
<div id="product-category-card">
<button
id="scroll-left"
aria-label="Scroll products left"
aria-controls="product-carousel"
class="fa-solid fa-chevron-left"
>
</button>
<div id="product-carousel">
<div id="product-list"><!--Product Cards will be dynamically inserted here--></div>
</div>
<button
id="scroll-right"
aria-label="Scroll products right"
aria-controls="product-carousel"
class="fa-solid fa-chevron-right"
>
</button>
</div>
</section>
<aside id="right-aside">
<div id="category-nav-container" aria-label="Available Product Categories">
<h2>Shop by Category</h2>
<div class="categories">
<ul>
<li><a href="gallery.html?category=trees#" class="cat-btn">Trees</a></li>
<li><a href="gallery.html?category=trees#" class="cat-btn">Shrubs</a></li>
<li><a href="gallery.html?category=indoor#" class="cat-btn">Indoor</a></li>
<li><a href="gallery.html?category=indoor#" class="cat-btn">Patio</a></li>
<li><a href="gallery.html?category=tools#" class="cat-btn">Tools</a></li>
<li><a href="gallery.html?category=tools#" class="cat-btn">Accessories</a></li>
<li><a href="gallery.html?category=tools#" class="cat-btn">Landscaping</a></li>
</ul>
</div>
</div>
</aside>
</div>
<div id="gallery-bottom">
<button id="cart-details">View Shopping Cart</button>
</div>
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="index.html">Home</a></li>
<li><a href="gallery.html" class="current-page">Gallery</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="community.html">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy 2024 Bloom Valley Nursery</div>
</footer>
<!-- Custom Modal for Newsletter Subscription -->
<div id="newsletter-modal" class="modal">
<div class="modal-content">
<span class="close-modal" id="newsletter-close-btn">&times;</span>
<h2>Newsletter Subscription</h2>
<form id="newsletter-form">
<input
type="email"
id="email-input"
placeholder="Enter your email"
required
aria-label="Enter your email to subscribe"
/>
<button type="submit" id="subscribe-btn">Subscribe</button>
</form>
</div>
</div>
<!-- Custom Alert Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- This loads after the page is read by browser -->
<script src="gallery-carousel.js"></script>
<script src="cart.js"></script>
<script src="newsletter.js"></script>
</body>
</html>

View File

@ -1,239 +0,0 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta
name="description"
content="Bloom Valley Nursery offers a variety of plants, garden tools, and expert gardening advice for your home and garden."
/>
<script
src="https://kit.fontawesome.com/acb7c3b0da.js"
crossorigin="anonymous"
></script>
<title>Homepage - Bloom Valley Nursery</title>
<link rel="stylesheet" href="styles.css" />
</head>
<body>
<!-- Header Section -->
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="index.html" aria-current="page" class="current-page">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="community.html">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>
<!-- Main Content Section -->
<main role="main" id="main-index">
<aside id="left-aside">
<div id="perks-feature-container" aria-label="Reasons for Shopping With Bloom Valley Nursery">
<h2 id="perks-heading">Shopper Perks</h2>
<div class="perk-item" aria-label="Perk">
<h3>- 50% Off Deal -</h3>
<p>New subscribers to our newsletter this month will receive a coupon for 50% off their first purchase! Click here for details! Terms and conditions apply.</p>
</div>
<div class="perk-item" aria-label="Perk">
<h3>Exceptional Quality</h3>
<p>Every plant is carefully cultivated from seed or bulb to maturity, offering you vibrant, healthy specimens.</p>
</div>
<div class="perk-item" aria-label="Perk">
<h3>Expert Guidance</h3>
<p>Our knowledgeable team is here to help, from selecting the perfect plants to offering planting tips.</p>
</div>
<div class="perk-item" aria-label="Perk">
<h3>Eco-Friendly Practices</h3>
<p>We prioritize sustainability by using environmentally conscious growing methods, so you can feel good about your choices.</p>
</div>
</div>
<div id="testimonials-feature" aria-label="Customer Testimonials About Their Experience With Bloom Valley Nursery.">
<h2>What Others Say</h2>
<div class="testimonial-container">
<div class="testimonial" aria-label="Customer Testimonial.">
<p>"My order arrived the very next day. The speed of delivery and high-quality products provided by Bloom Valley Nursery helped my project go smoothly from start to finish!"</p>
<h3>- Caroline N.</h3>
</div>
<div class="testimonial" aria-label="Customer Testimonial.">
<p>"Thanks to the Gardening 101 Workshop with Bethany and Bloom Valley Nursery's amazing line of products, I won 'Best Azaleas' at the 2024 Royal Horticultural Society's American Cup!"</p>
<h3>- Morris F.</h3>
</div>
<div class="testimonial" aria-label="Customer Testimonial.">
<p>"Bloom Valley Nursery's community garden inspired me take charge of my health. I was able to lose 50 pounds!"</p>
<h3>- Gladis B.</h3>
</div>
</div> </div>
</aside>
<!--<div id="featured-images">
<div class="featured-item">
<img src="image1.jpg" alt="Feature 1">
</div>-->
<section id="featured-container" aria-label="Featured items of the week">
<h2> This Week's Featured Items</h2>
<ul id="featured-images" aria-label="Images of this week's featured items">
<li><a href="gallery.html" id="featured-aloe-plant">
<img src="images/indoor/AloePlant.png" alt="An Aloe Vera plant in a turquoise ceramic planter." class="featured-item">Aloe Vera / Turquoise Planter</a></li>
<li><a href="gallery.html" id="featured-bird-house">
<img src="images/accessories/BirdHouse.png" alt="A handmade wooden birdhouse painted blue." class="featured-item">Handmade Wooden Birdhouse - Blue</a></li>
<li><a href="gallery.html" id="featured-apple-tree">
<img src="images/trees/AppleTree.png" alt="A Red Gala apple sapling in a burlap wrap." class="featured-item">Red Gala Apple Sapling - Burlap Bound</a></li>
<li><a href="gallery.html" id="featured-potting-soil">
<img src="images/accessories/PottingSoil.png" alt="A 10 lbs bag of potting soil." class="featured-item">Potting Soil - 10 lbs Bag</a></li>
<li><a href="gallery.html" id="featured-spider-plant">
<img src="images/indoor/SpiderPlant.png" alt="A Spider plant in a light gray ceramic planter." class="featured-item">Spider Plant / Light Gray Planter</a></li>
<li><a href="gallery.html" id="featured-birch-tree">
<img src="images/trees/BirchTree.png" alt="A Silver Birch sapling in a disposable plastic container." class="featured-item">Silver Birch Sapling - Containerized</a></li>
<li><a href="gallery.html" id="featured-watering-can">
<img src="images/accessories/WateringCan.png" alt="A blue painted aluminum watering can." class="featured-item">Painted Aluminum Watering Can - Blue</a></li>
<li><a href="gallery.html" id="featured-string-of-pearls">
<img src="images/indoor/StringofPearls.png" alt="String-of-pearls plant in hanging white ceramic planter." class="featured-item">String-of-Pearls Plant / Hanging White Planter</a></li>
<li><a href="gallery.html" id="featured-maple-tree">
<img src="images/trees/MapleTree.png" alt="A Japanese Maple sapling in a burlap wrap." class="featured-item">Japanese Maple Sapling - Burlap Bound</a></li>
</ul>
</section>
<aside id="right-aside">
<div id="category-nav-container" aria-label="Available Product Categories">
<h2>Shop by Category</h2>
<div class="categories">
<ul>
<li><a href="gallery.html?category=trees#" class="cat-btn">Trees</a></li>
<li><a href="gallery.html?category=shrubs#" class="cat-btn">Shrubs</a></li>
<li><a href="gallery.html?category=indoor#" class="cat-btn">Indoor</a></li>
<li><a href="gallery.html?category=patio#" class="cat-btn">Patio</a></li>
<li><a href="gallery.html?category=tools#" class="cat-btn">Tools</a></li>
<li><a href="gallery.html?category=accessories#" class="cat-btn">Accessories</a></li>
<li><a href="gallery.html?category=landscaping#" class="cat-btn">Landscaping</a></li>
</ul>
</div>
</div>
</aside>
<!-- Content specific to this page goes here -->
</main>
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="index.html" class="current-page">Home</a></li>
<li><a href="gallery.html">Gallery</a></li>
<li><a href="about.html">About Us</a></li>
<li><a href="community.html">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy 2024 Bloom Valley Nursery</div>
</footer>
<!-- Custom Newsletter Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>
<!-- This loads after the page is read by browser -->
<script src="script.js"></script>
<script src="cart.js"></script>
<script src="newsletter.js"></script>
</body>
</html>

1689
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -4,5 +4,8 @@
},
"dependencies": {
"servor": "^4.0.2"
},
"devDependencies": {
"@11ty/eleventy": "^3.1.2"
}
}

47
src/_includes/base.njk Normal file
View File

@ -0,0 +1,47 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{{ metaDesc }}">
<title>{{title}}</title>
{% if stylesheet %}
{% for style in stylesheet %}
<link rel="stylesheet" href="{{ style }}">
{% endfor %}
{% endif %}
{% if hCAPTCHA %}
<script src="{{ hCAPTCHA }}" async defer></script>
{% endif %}
{% if fontAwesome %}
<script src="{{ fontAwesome }}" crossorigin="anonymous"></script>
{% endif %}
</head>
<body>
{% include "header.html" %}
<main>
{{ content | safe }}
</main>
{% include "footer.html" %}
<!-- <a href="https://www.svgbackgrounds.com/set/free-svg-backgrounds-and-patterns/">Free SVG Backgrounds and Patterns by SVGBackgrounds.com</a> -->
{% if pageScripts %}
{% for script in pageScripts %}
<script src="{{ script }}"></script>
{% endfor %}
{% endif %}
</body>
</html>

103
src/_includes/footer.html Normal file
View File

@ -0,0 +1,103 @@
<!-- Footer Section -->
<footer role="contentinfo">
<div id="newsletter-container">
<label for="email-input" class="hidden">Enter your email to subscribe to our newsletter</label>
<form id="newsletter-form">
<input
type="email"
id="email-input"
aria-label="Enter your email to Subscribe"
placeholder="Subscribe@BloomValleyNursery.com"
/>
<button id="submit-btn" type="submit" aria-label="Submit the subscribe form">
Subscribe Now!
</button>
</form>
</div>
<div id="footer-nav">
<ul>
<li><a href="/" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
</div>
<div id="social-media">
<p>Check us out on social media!</p>
<ul class="social-icons">
<li id="pinterest">
<a href="#" aria-label="Follow us on Pinterest"
><i class="fa-brands fa-square-pinterest fa-lg"></i></a></li>
<li id="facebook">
<a href="#" aria-label="Follow us on Facebook"
><i class="fa-brands fa-facebook fa-lg"></i
></a>
</li>
<li id="instagram">
<a href="#" aria-label="Follow us on Instagram"
><i class="fa-brands fa-instagram fa-lg"></i
></a>
</li>
<li id="twitter">
<a href="#" aria-label="Follow us on X (Twitter)"
><i class="fa-brands fa-square-x-twitter fa-lg"></i
></a>
</li>
<li id="youtube">
<a href="#" aria-label="View our Youtube channel"
><i class="fa-brands fa-youtube fa-lg"></i
></a>
</li>
</ul>
</div>
<div id="copyright">&copy; 2025, Derek L. Seitz, <a href="https://dlseitz.dev">dlseitz.dev.</a></div>
</footer>
<!-- Custom Newsletter Modal -->
<div id="custom-alert" class="modal hidden">
<div class="modal-content">
<span class="close-modal" id="alert-close-btn">&times;</span>
<p id="alert-message"></p>
<button id="alert-ok-button">OK</button>
</div>
</div>
<!-- Modal for Shopping Cart -->
<div id="cart-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal">&times;</span>
<h2>Your Shopping Cart</h2>
<ul id="cart-items"></ul> <!-- Dynamically populated -->
<p id="cart-total"></p> <!-- Sub-total will appear here -->
<div class="modal-buttons">
<button id="clear-cart-modal-btn">Clear Cart</button>
<button id="process-order-modal-btn">Process Order</button>
</div>
</div>
</div>
<!-- Modal for Item Added -->
<div id="item-added-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="item-added-close">&times;</span>
<p id="item-added-message"></p> <!-- Dynamically set message -->
</div>
</div>
<!-- Confirmation Modal -->
<div id="confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="confirmation-close-btn">&times;</span>
<p id="confirmation-message"></p> <!-- Dynamic confirmation message -->
<button id="confirmation-confirm-btn">Confirm</button>
<button id="confirmation-close-btn">Close</button>
</div>
</div>
<!-- Final Confirmation Modal -->
<div id="final-confirmation-modal" class="modal" style="display: none;">
<div class="modal-content">
<span class="close-modal" id="final-confirmation-close-btn">&times;</span>
<p id="final-confirmation-message"></p> <!-- Message after successful action -->
<button id="final-confirmation-close-btn">Close</button>
</div>
</div>

25
src/_includes/header.html Normal file
View File

@ -0,0 +1,25 @@
<header role="banner">
<div class="logo">
<img
src="images/Client1_LogoPalette2_F0C06D.png"
alt="Bloom Valley Nursery Logo"/>
</div>
<h1>Bloom Valley Nursery</h1>
<!-- Navigation Bar -->
<nav role="navigation" aria-label="Main Navigation">
<ul>
<li>
<a href="/" aria-current="page" class="current-page">Home</a></li>
<li><a href="/gallery/">Gallery</a></li>
<li><a href="/about/">About Us</a></li>
<li><a href="/community/">Community Events</a></li>
</ul>
<div>
<button
id="shopping-cart"
aria-label="Open shopping cart"
class="fa-solid fa-cart-shopping fa-2xl">
</button>
</div>
</nav>
</header>

116
src/about.njk Normal file
View File

@ -0,0 +1,116 @@
---
layout: base.njk
metaDesc: "Demo eCommerce website by Derek L. Seitz - dlseitz.dev"
title: "About - Bloom Valley Nursery Demo"
stylesheet:
- "/styles/variables.css"
- "/styles/base.css"
- "/styles/header-footer.css"
- "/styles/about.css"
fontAwesome: "https://kit.fontawesome.com/abc7c3b0da.js"
isLandingPage: false
pageScripts:
- "/scripts/feedback.js"
- "/scripts/cart.js"
- "/scripts/newsletter.js"
---
<div id="main-top">
<aside
id="business-info"
aria-label="Hours of operation and contact info"
>
<h3>Contact Us</h3>
<div id="phone">
<h4><strong>Phone:</strong></h4>
<p>(555) 123-4567</p>
</div>
<h3>Hours of Operation</h3>
<div id="hours">
<h4><strong>Monday - Friday:</strong></h4>
<p>9:00 AM - 6:00 PM</p>
<h4><strong>Saturday & Sunday:</strong></h4>
<p>10:00 AM - 5:00 PM</p>
</div>
</aside>
<div id="story" aria-label="History of Bloom Valley Nursery">
<h1>The Story of Bloom Valley</h1>
<p>
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.
</p>
<p>
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.
</p>
<p>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!</p>
</div>
</div>
<div id="main-bottom">
<div id="feedback" aria-label="Feedback form">
<div id="feedback-intro">
<h1>We Want to Hear From You!</h1>
<h3>Your feedback provides us with valuable insight into where we stand in our commitment to our neighbors, friends, and the entire Bloom Valley community.</h3>
<p>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!</p>
</div>
<div id="feedback-form">
<form action="#" method="POST">
<div id="customer-info">
<div id="name-field">
<label for="name">Name:</label>
<input
type="text"
id="name"
name="name"
aria-label="Enter your name here" placeholder="Your Name"
required/>
</div>
<div id="phone-field">
<label for="tel">Phone Number:</label>
<input
type="tel"
id="tel"
name="telephone"
aria-label="Enter your contact phone number here" placeholder="Your Phone Number"
required/>
</div>
<div id="email-field">
<label for="email">Email:</label>
<input
type="email"
id="email"
name="email"
aria-label="Enter your contact email here" placeholder="user@domain.com"
required/>
</div>
</div>
<div id="customer-message">
<div id="message-field">
<label for="message">Message:</label>
<textarea
id="message"
name="message"
rows="5"
aria-label="Enter feedback or inquiries here" placeholder="Enter feedback or inquiries here..."
required>
</textarea>
</div>
<div id="form-submit-btn">
<button
id="form-submit"
type="submit"
aria-label="Submit feedback or inquiry"
>Submit
</button>
</div>
</div>
</form>
</div>
</div>

99
src/community.njk Normal file
View File

@ -0,0 +1,99 @@
---
layout: base.njk
metaDesc: "Demo eCommerce website by Derek L. Seitz - dlseitz.dev"
title: "Community Events - Bloom Valley Nursery Demo"
stylesheet:
- "/styles/variables.css"
- "/styles/base.css"
- "/styles/header-footer.css"
- "/styles/community.css"
fontAwesome: "https://kit.fontawesome.com/abc7c3b0da.js"
isLandingPage: false
pageScripts:
- "/scripts/cart.js"
- "/scripts/newsletter.js"
---
<h1>Mark Your Calendars!</h1>
<div id="calendar-events-container">
<div class="calendar">
<iframe
src="https://calendar.google.com/calendar/embed?src=your_calendar_id&ctz=America/Chicago"
style="border: 0; width: 90vww; height: 600px"
frameborder="0"
scrolling="no" aria-label="Google Calendar displaying upcoming events at Bloom Valley Nursery">
</iframe><!-- change "your_calendar_id" to an actual Google Calendar ID (Not possible due to the Client Scenario being fictional. This would require creating a fake Google account.)-->
</div>
<section class="events" aria-label="List of upcoming local events">
<h2>Upcoming Events</h2>
<div class="event-list">
<div id="bvn-events">
<h3>Events at Bloom Valley Nursery</h3>
<p>
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.
</p>
<ul>
<li>
<strong>Gardening and Landscaping 101:</strong><br><strong>When:</strong><br> 2nd Tuesday of
Every Month @ 6:30 pm.<br>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.
</li>
<li>
<strong>Deck the Halls</strong><br><strong>When:</strong> Saturday @ 10:00 am.<br>Join
Nathaniel and Vincent as they guide us through picking and tending
the perfect live Christmas tree for your Christmas decoration
focal-point.
</li>
<li>
<strong>Christmas Eve and Christmas Day</strong><br><strong>Bloom Valley
Nursery will close on Christmas Eve at 8:00 pm</strong> for any last-minute
shopping.<br>The nursery will remain <strong>closed until January 2nd</strong>. 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!<br><strong>Happy Holidays!!!</strong>
</li>
</ul>
</div>
<div id="community-wide">
<h3>Community-Wide Events</h3>
<p>
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.
</p>
<ul>
<li>
<strong>Tree Lighting Ceremony</strong><br><strong>When:</strong></br>Thursday @ 6:00 pm.<br>
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 <strong>in front of City Hall</strong> 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!
</li>
</ul>
</div>
<!-- Add more events as needed -->
</div>
</div>
</section>
<p>
For more details, to add events to this page, or to leave feedback,
<a
href="/about/#feedback"
aria-label="Go to the feedback form on the About Us page to leave feedback or inquiries."
>click here</a
> to send us a message.
</p>

61
src/gallery.njk Normal file
View File

@ -0,0 +1,61 @@
---
layout: base.njk
metaDesc: "Demo eCommerce website by Derek L. Seitz - dlseitz.dev"
title: "Gallery - Bloom Valley Nursery Demo"
stylesheet:
- "/styles/variables.css"
- "/styles/base.css"
- "/styles/header-footer.css"
- "/styles/gallery.css"
fontAwesome: "https://kit.fontawesome.com/abc7c3b0da.js"
isLandingPage: false
pageScripts:
- "/scripts/gallery-carousel.js"
- "/scripts/script.js"
- "/scripts/cart.js"
- "/scripts/newsletter.js"
---
<div id="gallery-top">
<section id="product-carousel-feature" aria-label="Interactive Carousel of Available Products by Category.">
<h2>Products by Category</h2>
<div id="product-category-card">
<button
id="scroll-left"
aria-label="Scroll products left"
aria-controls="product-carousel"
class="fa-solid fa-chevron-left"
>
</button>
<div id="product-carousel">
<div id="product-list"><!--Product Cards will be dynamically inserted here--></div>
</div>
<button
id="scroll-right"
aria-label="Scroll products right"
aria-controls="product-carousel"
class="fa-solid fa-chevron-right"
>
</button>
</div>
</section>
<aside id="right-aside">
<div id="category-nav-container" aria-label="Available Product Categories">
<h2>Shop by Category</h2>
<div class="categories">
<ul>
<li><a href="/gallery/?category=trees#" class="cat-btn">Trees</a></li>
<li><a href="/gallery/?category=trees#" class="cat-btn">Shrubs</a></li>
<li><a href="/gallery/?category=indoor#" class="cat-btn">Indoor</a></li>
<li><a href="/gallery/?category=indoor#" class="cat-btn">Patio</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Tools</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Accessories</a></li>
<li><a href="/gallery/?category=tools#" class="cat-btn">Landscaping</a></li>
</ul>
</div>
</div>
</aside>
</div>
<div id="gallery-bottom">
<button id="cart-details">View Shopping Cart</button>
</div>

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 38 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 110 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 KiB

BIN
src/images/media/image1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 175 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 KiB

Some files were not shown because too many files have changed in this diff Show More