Files
milinda-pitch/js/app.js
2026-01-16 09:23:37 +01:00

92 lines
2.5 KiB
JavaScript

/**
* 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 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`);
}
});
});