/** * Main Application Entry Point * Imports and registers all web components */ // Import cart store (must be first to set up window.cartStore) import cart from "./store/cart.js"; // Import all components import "./components/site-header.js"; import "./components/top-bar.js"; import "./components/horizontal-scroll-nav.js"; import "./components/search-bar.js"; import "./components/site-content.js"; import "./components/site-footer.js"; import "./components/footer-accordion-item.js"; import "./components/book-card.js"; import "./components/push-box.js"; import "./components/arrow-button.js"; import "./components/section-title.js"; import "./components/add-to-cart-button.js"; import "./components/cta-button.js"; import "./components/category-card.js"; import "./components/newsletter-signup.js"; import "./components/book-details.js"; import "./components/icon-cta-button.js"; import "./components/icon-link-button.js"; import "./components/action-links-list.js"; import "./components/content-tabs.js"; import "./components/image-gallery.js"; import "./components/book-description.js"; import "./components/book-reviews.js"; import "./components/book-review-item.js"; // Import icon components import "./icons/menu-icon.js"; import "./icons/user-icon.js"; import "./icons/shopping-bag-icon.js"; import "./icons/arrow-circle-right-icon.js"; import "./icons/book-open-icon.js"; import "./icons/clipboard-icon.js"; import "./icons/chevron-down-icon.js"; // App initialization document.addEventListener("DOMContentLoaded", () => { console.log("BookStore app initialized"); // Initialize cart badge on page load const count = cart.getItemCount(); if (count > 0) { window.dispatchEvent( new CustomEvent("cart-updated", { detail: { items: cart.getItems(), count: count, total: cart.getTotal(), }, }) ); } // Listen for add-to-cart events from book-card and book-details components document.addEventListener("add-to-cart", (event) => { const { title, author, price, type, image } = event.detail || {}; if (title) { cart.addItem({ title, author: author || "", price: price || "€ 0,00", type: type || "physical", image: image || "", }); // Optional: Show feedback to user console.log(`Added "${title}" to cart`); } }); // Listen for buy-ebook events from book-details component document.addEventListener("buy-ebook", (event) => { const { title } = event.detail || {}; if (title) { cart.addItem({ title, author: "", price: "€ 0,00", // eBook price would come from component type: "ebook", image: "", }); console.log(`Added eBook "${title}" to cart`); } }); });