feat: rebuild site content management

Replace legacy FAQ, downloads, and release flows with project and blog publishing. Add configurable branding and theme fields plus clean-start Compose seeding support.
This commit is contained in:
mohamad
2026-09-24 02:32:27 +03:30
parent 4fc4282f0f
commit 588d95f889
43 changed files with 703 additions and 1193 deletions
-31
View File
@@ -5,9 +5,6 @@ const SELECTORS = {
navbarToggle: '#navbarToggle',
navbarMenu: '#navbarMenu',
productsNavItem: '#productsNavItem',
faqItems: '.faq-item',
faqQuestion: '.faq-question',
faqAnswer: '.faq-answer',
fadeInElements: '.fade-in',
citationCopy: '.citation-copy',
};
@@ -192,33 +189,6 @@ function initMegaMenu() {
});
}
function initFAQAccordion() {
const faqItems = document.querySelectorAll(SELECTORS.faqItems);
faqItems.forEach((item) => {
const question = item.querySelector(SELECTORS.faqQuestion);
const answer = item.querySelector(SELECTORS.faqAnswer);
if (!question || !answer) return;
question.addEventListener('click', () => {
const isOpen = item.classList.contains('open');
faqItems.forEach((other) => {
if (other !== item) {
other.classList.remove('open');
const otherQuestion = other.querySelector(SELECTORS.faqQuestion);
const otherAnswer = other.querySelector(SELECTORS.faqAnswer);
if (otherQuestion) otherQuestion.setAttribute('aria-expanded', 'false');
if (otherAnswer) otherAnswer.hidden = true;
}
});
item.classList.toggle('open', !isOpen);
question.setAttribute('aria-expanded', String(!isOpen));
answer.hidden = isOpen;
});
});
}
function initIntersectionObserver() {
const elements = document.querySelectorAll(SELECTORS.fadeInElements);
if (!elements.length) return;
@@ -329,7 +299,6 @@ function init() {
initNavbarScroll();
initMobileMenu();
initMegaMenu();
initFAQAccordion();
initIntersectionObserver();
initReadMore();
initCitationCopy();