500+ Free Online Tools
Your complete toolkit for everyday tasks – SEO, Development, Design, and more
`,
textCase: () => `
Text Case Converter
`,
qrGenerator: () => `
QR Code Generator
`,
jsonFormatter: () => `
JSON Formatter
`,
passwordGen: () => `
Password Generator
`,
loremIpsum: () => `
Lorem Ipsum Generator
`,
colorPicker: () => `
Color Picker
`
};
// Default component for tools without specific implementation
const defaultComponent = (tool) => `
${tool.name}
This tool is coming soon!
We're working hard to add this functionality.
`;
// Open Tool Modal
function openToolModal(tool) {
const modal = document.getElementById("toolModal");
const modalContent = document.getElementById("modalContent");
if(components[tool.component]) {
modalContent.innerHTML = components[tool.component]();
} else {
modalContent.innerHTML = defaultComponent(tool);
}
// Re-evaluate scripts
const scripts = modalContent.getElementsByTagName("script");
for(let script of scripts) {
eval(script.innerHTML);
}
modal.style.display = "block";
}
// Close Modal
document.querySelector(".close-modal").addEventListener("click", () => {
document.getElementById("toolModal").style.display = "none";
});
window.addEventListener("click", (e) => {
if(e.target === document.getElementById("toolModal")) {
document.getElementById("toolModal").style.display = "none";
}
});
// Category Filter
document.querySelectorAll(".category-btn").forEach(btn => {
btn.addEventListener("click", () => {
document.querySelectorAll(".category-btn").forEach(b => b.classList.remove("active"));
btn.classList.add("active");
currentCategory = btn.dataset.category;
renderTools();
});
});
// Search Function
document.getElementById("searchInput").addEventListener("input", (e) => {
searchTerm = e.target.value;
renderTools();
});
// Initialize
renderTools();