AashishAIHub's picture
Upload folder using huggingface_hub
d2c6e2f verified
// ============ THEME TOGGLE ============
(function () {
const html = document.documentElement;
let theme = (matchMedia('(prefers-color-scheme:dark)').matches ? 'dark' : 'light');
html.setAttribute('data-theme', theme);
function updateToggles() {
document.querySelectorAll('[data-theme-toggle]').forEach(btn => {
btn.innerHTML = theme === 'dark'
? '<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="5"/><path d="M12 1v2M12 21v2M4.22 4.22l1.42 1.42M18.36 18.36l1.42 1.42M1 12h2M21 12h2M4.22 19.78l1.42-1.42M18.36 5.64l1.42-1.42"/></svg>'
: '<svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"/></svg>';
btn.setAttribute('aria-label', 'Switch to ' + (theme === 'dark' ? 'light' : 'dark') + ' mode');
});
}
document.addEventListener('DOMContentLoaded', () => {
updateToggles();
document.querySelectorAll('[data-theme-toggle]').forEach(btn => {
btn.addEventListener('click', () => {
theme = theme === 'dark' ? 'light' : 'dark';
html.setAttribute('data-theme', theme);
// theme stored in memory only
updateToggles();
});
});
});
})();
// ============ MOBILE MENU ============
document.addEventListener('DOMContentLoaded', () => {
const hamburger = document.querySelector('.hamburger');
const mobileMenu = document.querySelector('.mobile-menu');
if (hamburger && mobileMenu) {
hamburger.addEventListener('click', () => {
mobileMenu.classList.toggle('open');
});
}
// ============ CODE COPY ============
document.querySelectorAll('.code-block__copy').forEach(btn => {
btn.addEventListener('click', () => {
const pre = btn.closest('.code-block').querySelector('pre');
navigator.clipboard.writeText(pre.textContent).then(() => {
btn.textContent = 'Copied!';
setTimeout(() => btn.textContent = 'Copy', 2000);
});
});
});
// ============ PROMPT TABS ============
document.querySelectorAll('.prompt-example__tab').forEach(tab => {
tab.addEventListener('click', () => {
const example = tab.closest('.prompt-example');
example.querySelectorAll('.prompt-example__tab').forEach(t => t.classList.remove('active'));
example.querySelectorAll('.prompt-panel').forEach(p => p.classList.remove('active'));
tab.classList.add('active');
const target = example.querySelector('#' + tab.dataset.panel);
if (target) target.classList.add('active');
});
});
// ============ SCROLL ANIMATIONS ============
const observer = new IntersectionObserver((entries) => {
entries.forEach(e => {
if (e.isIntersecting) {
e.target.classList.add('animate-in');
observer.unobserve(e.target);
}
});
}, { threshold: 0.1 });
document.querySelectorAll('.lesson-card, .track-card, .feature-item, .technique-card').forEach(el => {
el.style.opacity = '0';
el.style.transform = 'translateY(16px)';
el.style.transition = 'opacity 0.45s ease, transform 0.45s ease';
observer.observe(el);
});
document.addEventListener('animationend', (e) => {
e.target.style.opacity = '';
e.target.style.transform = '';
});
// ============ ACTIVE SIDEBAR LINK ============
const sidebarLinks = document.querySelectorAll('.sidebar__item a');
const hash = window.location.pathname.split('/').pop();
sidebarLinks.forEach(a => {
if (a.getAttribute('href') && a.getAttribute('href').includes(hash)) {
a.closest('.sidebar__item').classList.add('active');
}
});
});
// ============ PLAYGROUND DEMO ============
window.runPlayground = function () {
const input = document.getElementById('pg-input');
const output = document.getElementById('pg-output');
const technique = document.getElementById('pg-technique');
if (!input || !output) return;
const prompt = input.value.trim();
if (!prompt) { output.textContent = 'Please enter a prompt first.'; return; }
const t = technique ? technique.value : 'basic';
const examples = {
basic: `[Response to: "${prompt.slice(0, 50)}..."]\n\nThis is a simulated response demonstrating basic prompting. In a real Claude session, the model reads your exact words and generates a contextually appropriate reply.\n\nKey insight: The clearer your prompt, the better the response.`,
roleplay: `[Role: Expert assigned]\nAs a domain expert, I'll answer: "${prompt.slice(0, 50)}..."\n\nRole prompting activates Claude's specialized knowledge modes. By assigning a persona, you frame the response context and get more authoritative, on-topic answers.`,
cot: `[Chain-of-Thought activated]\nLet me think through this step by step:\n\n1. First, I identify the core question in: "${prompt.slice(0, 40)}..."\n2. I consider the relevant context and constraints\n3. I reason through potential approaches\n4. I arrive at a well-structured conclusion\n\nResult: CoT prompting dramatically improves accuracy on complex reasoning tasks.`,
xml: `[XML-structured response]\n<answer>\n <analysis>Understanding the prompt: "${prompt.slice(0, 40)}..."</analysis>\n <reasoning>XML tags help Claude organize output and follow structured instructions precisely</reasoning>\n <conclusion>Structured prompts yield structured, predictable outputs</conclusion>\n</answer>`,
fewshot: `[Few-shot learning activated]\nBased on the patterns in your examples, I'm applying that template to: "${prompt.slice(0, 40)}..."\n\nFew-shot prompting shows Claude the exact format and style you want, eliminating ambiguity and dramatically improving output consistency.`
};
output.textContent = examples[t] || examples.basic;
};