import { t, i18n } from '../../i18n.js'; import '../listing-card.js'; import '../search-box.js'; class PageHome extends HTMLElement { connectedCallback() { this.render(); this.unsubscribe = i18n.subscribe(() => this.render()); } disconnectedCallback() { if (this.unsubscribe) this.unsubscribe(); } render() { this.innerHTML = /* html */ ` ${this.renderCategoryBadges()} ${t('home.recentListings')} ${this.renderPlaceholderListings()} `; } renderCategoryBadges() { const topCategories = ['electronics', 'vehicles', 'furniture', 'clothing', 'sports']; return topCategories.map(cat => ` ${t(`categories.${cat}`)} `).join(''); } renderPlaceholderListings() { const placeholders = Array(10).fill(null); return placeholders.map((_, i) => /* html */` `).join(''); } } customElements.define('page-home', PageHome); const style = document.createElement('style'); style.textContent = /* css */ ` /* Search Section */ page-home .search-section { padding: var(--space-xl) 0; } /* Category Badges (Desktop only) */ page-home .categories-desktop { display: none; margin-bottom: var(--space-xl); } @media (min-width: 768px) { page-home .categories-desktop { display: block; } } page-home .category-badges { display: flex; flex-wrap: wrap; gap: var(--space-sm); justify-content: center; } page-home .badge { display: inline-block; padding: var(--space-xs) var(--space-md); background: var(--color-bg-secondary); border: 1px solid var(--color-border); border-radius: var(--radius-full); color: var(--color-text); text-decoration: none; font-size: var(--font-size-sm); transition: all var(--transition-fast); } page-home .badge:hover { background: var(--color-primary); color: var(--color-bg); border-color: var(--color-primary); } /* Listings */ page-home section { margin-bottom: var(--space-xl); } page-home section h2 { margin-bottom: var(--space-lg); } page-home .listings-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: var(--space-md); } @media (min-width: 768px) { page-home .listings-grid { grid-template-columns: repeat(5, 1fr); } } `; document.head.appendChild(style);