Best Seller
Fiberglass
Fiberglass Panels
Durable and weather-resistant fiberglass panels for construction
/sheet
View Details
Ceilings
Acoustic Ceiling Tiles
Premium sound-absorbing ceiling panels for better acoustics
/box
View Details
Fiberglass
Fiberglass Sheets
High-quality reinforced sheets for various applications
/sheet
View Details
Insulation
Thermal Insulation Rolls
Flexible thermal insulation for walls and attics
/roll
View Details
Sale
Ceilings
Ceiling Grid System
Complete suspended ceiling grid framework
/set
View Details
Tools
Installation Tools Kit
Professional tools for insulation installation
/kit
View Details
New
Insulation
Spray Foam Insulation
Advanced spray foam for superior air sealing
/can
View Details
Insulation
Fiberglass Batts
Pre-cut fiberglass insulation for standard spacing
/pack
View Details
Accessories
Insulation Tape
High-quality foil tape for sealing joints
/roll
View Details
Fiberglass Panels
"Excellent quality fiberglass panels! They're durable, weather-resistant, and easy to install.
KM8's products have become my go-to for all roofing projects. Highly recommended!"
March 15, 2024
Acoustic Ceiling Tiles
"The acoustic ceiling tiles transformed our home office! The sound quality improved dramatically,
and they look very professional. Great value for money and excellent customer service."
February 28, 2024
Thermal Insulation Rolls
"As an architect, I specify KM8's thermal insulation for all my projects. Consistent quality,
reliable performance, and their team is always helpful with technical questions."
March 5, 2024
"Great quality ceiling tiles! We ordered for our entire commercial building. Fast delivery and excellent packaging."
David Lee
Construction Manager
"Best prices for insulation materials in the market. KM8 has been our reliable supplier for all our projects."
Anna Mendoza
Contractor
"Professional service and premium products. The team helped us select the right materials for our requirements."
Michael Chua
Facility Manager
Bulk Orders
Need a Large Quantity?
Contact us for bulk pricing and wholesale discounts. We offer competitive rates for large orders.
Bulk Discounts
Free Delivery
Priority Support
Request a Quote
Write a Review
Share your experience with our products
Login Required
Please log in to submit a review. If you don't have an account, you can create one.
Log In
Sign Up
// Review Modal Functionality
document.addEventListener('DOMContentLoaded', function() {
const writeReviewBtn = document.getElementById('write-review-btn');
const reviewModal = document.getElementById('review-modal');
const modalOverlay = document.getElementById('modal-overlay');
const modalClose = document.getElementById('modal-close');
const cancelReview = document.getElementById('cancel-review');
const reviewForm = document.getElementById('review-form');
const starRating = document.getElementById('star-rating');
const ratingInput = document.getElementById('rating-input');
const loginModal = document.getElementById('login-modal');
let selectedRating = 0;
// Open review modal
writeReviewBtn.addEventListener('click', function() {
// Check if user is logged in (simulated)
const isLoggedIn = localStorage.getItem('km8_user');
if (!isLoggedIn) {
// Show login modal
loginModal.classList.add('active');
document.body.style.overflow = 'hidden';
} else {
// Show review modal
reviewModal.classList.add('active');
document.body.style.overflow = 'hidden';
}
});
// Close modals
function closeModals() {
reviewModal.classList.remove('active');
loginModal.classList.remove('active');
document.body.style.overflow = '';
}
modalOverlay.addEventListener('click', closeModals);
modalClose.addEventListener('click', closeModals);
cancelReview.addEventListener('click', closeModals);
// Star rating functionality
const stars = starRating.querySelectorAll('i');
stars.forEach(star => {
star.addEventListener('click', function() {
selectedRating = parseInt(this.getAttribute('data-rating'));
ratingInput.value = selectedRating;
stars.forEach((s, index) => {
if (index < selectedRating) {
s.classList.remove('ri-star-line');
s.classList.add('ri-star-fill');
} else {
s.classList.remove('ri-star-fill');
s.classList.add('ri-star-line');
}
});
});
star.addEventListener('mouseenter', function() {
const hoverRating = parseInt(this.getAttribute('data-rating'));
stars.forEach((s, index) => {
if (index < hoverRating) {
s.classList.remove('ri-star-line');
s.classList.add('ri-star-fill');
} else {
s.classList.remove('ri-star-fill');
s.classList.add('ri-star-line');
}
});
});
star.addEventListener('mouseleave', function() {
stars.forEach((s, index) => {
if (index < selectedRating) {
s.classList.remove('ri-star-line');
s.classList.add('ri-star-fill');
} else {
s.classList.remove('ri-star-fill');
s.classList.add('ri-star-line');
}
});
});
});
// Form submission
reviewForm.addEventListener('submit', function(e) {
e.preventDefault();
if (selectedRating === 0) {
alert('Please select a rating');
return;
}
// Simulate form submission
const formData = new FormData(reviewForm);
const reviewData = {
product: formData.get('product'),
rating: selectedRating,
title: formData.get('title'),
review: formData.get('review'),
recommend: formData.get('recommend') === 'yes',
date: new Date().toISOString()
};
// In a real implementation, you would send this to your database
console.log('Review submitted:', reviewData);
// Show success message
alert('Thank you for your review! It will be posted after verification.');
// Reset form and close modal
reviewForm.reset();
selectedRating = 0;
stars.forEach(star => {
star.classList.remove('ri-star-fill');
star.classList.add('ri-star-line');
});
closeModals();
});
});
// Login/Signup functions (to be implemented with your auth system)
function showLogin() {
window.location.href = 'login-signup.html';
}
function showSignup() {
window.location.href = 'login-signup.html#signup';
}
function closeLoginModal() {
document.getElementById('login-modal').classList.remove('active');
document.body.style.overflow = '';
}
// Add meta style
var style = document.createElement('style');
style.textContent = '.product-card__meta { font-size: 13px; color: #64748b; margin: 4px 0; }';
document.head.appendChild(style);
// Load products from database
function loadFromDatabase() {
fetch('load-products.php')
.then(response => response.json())
.then(data => {
if (data.success && data.products) {
var grid = document.getElementById("products-grid");
if (!grid) return;
for (var i = 0; i < data.products.length; i++) {
var p = data.products[i];
var html = '
' +
'
' +
'
' +
'
' +
'
' +
'
' + p.category + ' ' +
'
' + p.name + ' ' +
'
' + p.description + '
' +
(p.thickness ? '
Thickness: ' + p.thickness + '
' : '') +
(p.size ? '
Size: ' + p.size + '
' : '') +
(p.environment ? '
Environment: ' + p.environment + '
' : '') +
'
Inquire ' +
'
' +
'
';
grid.insertAdjacentHTML('beforeend', html);
}
}
})
.catch(error => console.log('Error loading products:', error));
}
loadFromDatabase();
// Search functionality
const searchInput = document.getElementById('product-search');
const searchBtn = document.querySelector('.products__search-btn');
function filterProducts() {
const searchTerm = searchInput.value.toLowerCase();
const activeFilter = document.querySelector('.filter-btn.active').dataset.filter;
document.querySelectorAll('.product-card').forEach(card => {
const category = card.dataset.category;
const title = card.querySelector('.product-card__title').textContent.toLowerCase();
const desc = card.querySelector('.product-card__description').textContent.toLowerCase();
const matchesSearch = searchTerm === '' || title.includes(searchTerm) || desc.includes(searchTerm);
const matchesFilter = activeFilter === 'all' || category === activeFilter;
if (matchesSearch && matchesFilter) {
card.style.display = '';
} else {
card.style.display = 'none';
}
});
}
if (searchInput) {
searchInput.addEventListener('input', filterProducts);
}
// Category dropdown filter
const categoryDropdown = document.getElementById('category-dropdown');
if (categoryDropdown) {
categoryDropdown.addEventListener('change', function() {
const selectedCategory = this.value;
// Update filter buttons
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.classList.remove('active');
if (btn.dataset.filter === selectedCategory) {
btn.classList.add('active');
}
});
if (selectedCategory === 'all') {
document.querySelector('.filter-btn[data-filter="all"]').classList.add('active');
}
// Filter products
filterProducts();
});
}
// Sidebar category links
document.querySelectorAll('.category-link').forEach(link => {
link.addEventListener('click', function(e) {
e.preventDefault();
const selectedCategory = this.dataset.filter;
// Update sidebar active state
document.querySelectorAll('.category-link').forEach(l => l.classList.remove('active'));
this.classList.add('active');
// Update filter buttons
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.classList.remove('active');
if (btn.dataset.filter === selectedCategory) {
btn.classList.add('active');
}
});
if (selectedCategory === 'all') {
document.querySelector('.filter-btn[data-filter="all"]').classList.add('active');
}
// Filter products
filterProducts();
// Scroll to products
document.querySelector('.products-section').scrollIntoView({ behavior: 'smooth' });
});
});
// Search autocomplete
if (searchInput) {
const suggestionsBox = document.getElementById('search-suggestions');
searchInput.addEventListener('input', function() {
const term = this.value.toLowerCase();
if (term.length < 2) {
suggestionsBox.classList.remove('show');
return;
}
const allCards = document.querySelectorAll('.product-card');
let matches = [];
allCards.forEach(card => {
const title = card.querySelector('.product-card__title').textContent.toLowerCase();
const category = card.dataset.category;
if (title.includes(term) || category.includes(term)) {
const img = card.querySelector('.product-card__image img');
matches.push({
name: card.querySelector('.product-card__title').textContent,
category: category,
img: img ? img.src : ''
});
}
});
if (matches.length > 0) {
suggestionsBox.innerHTML = matches.slice(0, 5).map(m => `
${m.img ? `
` : '
'}
`).join('');
suggestionsBox.classList.add('show');
} else {
suggestionsBox.classList.remove('show');
}
});
// Hide suggestions when clicking outside
document.addEventListener('click', function(e) {
if (!searchInput.contains(e.target) && !suggestionsBox.contains(e.target)) {
suggestionsBox.classList.remove('show');
}
});
}
if (searchBtn) {
searchBtn.addEventListener('click', filterProducts);
}
// Filter buttons
document.querySelectorAll('.filter-btn').forEach(btn => {
btn.addEventListener('click', () => {
document.querySelectorAll('.filter-btn').forEach(b => b.classList.remove('active'));
btn.classList.add('active');
filterProducts();
});
});
// Category sidebar toggle for mobile
function toggleCategories() {
const toggle = document.querySelector('.sidebar-toggle');
const list = document.querySelector('.category-list');
toggle.classList.toggle('open');
list.classList.toggle('show');
}
// Background slider
document.addEventListener('DOMContentLoaded', function() {
const slides = document.querySelectorAll('.page-header__bg-image');
let currentSlide = 0;
if (slides.length > 0) {
slides[0].classList.add('active');
setInterval(function() {
slides[currentSlide].classList.remove('active');
currentSlide = (currentSlide + 1) % slides.length;
slides[currentSlide].classList.add('active');
}, 1300);
}
});