if (!currentQuote) return <div>No quotes available in this category.</div>;
const categorySelect = document.getElementById('categorySelect'); const randomBtn = document.getElementById('randomBtn'); const quoteTextEl = document.getElementById('quoteText'); const quoteAuthor = document.getElementById('quoteAuthor'); const quoteMeta = document.getElementById('quoteMeta'); const copyBtn = document.getElementById('copyBtn'); const shareBtn = document.getElementById('shareBtn'); const copyMsgSpan = document.getElementById('copyMsg'); pavel florensky quotes
categorySelect.addEventListener('change', handleCategoryChange); randomBtn.addEventListener('click', handleRandom); copyBtn.addEventListener('click', copyQuote); shareBtn.addEventListener('click', shareOnTwitter); if (!currentQuote) return <
function copyQuote() const textToCopy = "$currentQuote.text" — Pavel Florensky$currentQuote.source ? , $currentQuote.source : '' ; navigator.clipboard.writeText(textToCopy); copyMsgSpan.textContent = '✓ Copied!'; setTimeout(() => copyMsgSpan.textContent = ''; , 2000); No quotes available in this category.<
const categories = ['All', ...new Set(florenskyQuotes.map(q => q.category))];
function handleCategoryChange(e) currentCategory = e.target.value; const filtered = getFilteredQuotes(); if (filtered.length > 0) updateQuoteDisplay(filtered[0]); else quoteTextEl.textContent = "No quotes in this category.";