← back to Flockedwallpaper
flockedwallpaper: untrack 6 stale files at repo root (21MB freed from clone)
3e74f2c35b3eecf20698d32a61086bfa88b71238 · 2026-05-19 23:13:47 -0700 · Steve
- claude-skills-export.zip (21MB), claude-skills-md-only.zip (600K): stale ~/.claude/skills exports from May 7
- index-old-backup.html, server-old-backup.js: pre-rewrite snapshots, superseded
- test-hex-sort.html, test-load.html: throwaway test pages
All 6 now match patterns in .gitignore (previous commit). Files remain on disk; cache-only removal.
Files touched
D claude-skills-export.zipD claude-skills-md-only.zipD index-old-backup.htmlD server-old-backup.jsD test-hex-sort.htmlD test-load.html
Diff
commit 3e74f2c35b3eecf20698d32a61086bfa88b71238
Author: Steve <steve@designerwallcoverings.com>
Date: Tue May 19 23:13:47 2026 -0700
flockedwallpaper: untrack 6 stale files at repo root (21MB freed from clone)
- claude-skills-export.zip (21MB), claude-skills-md-only.zip (600K): stale ~/.claude/skills exports from May 7
- index-old-backup.html, server-old-backup.js: pre-rewrite snapshots, superseded
- test-hex-sort.html, test-load.html: throwaway test pages
All 6 now match patterns in .gitignore (previous commit). Files remain on disk; cache-only removal.
---
claude-skills-export.zip | Bin 22163040 -> 0 bytes
claude-skills-md-only.zip | Bin 614252 -> 0 bytes
index-old-backup.html | 491 ----------------------------------------------
server-old-backup.js | 62 ------
test-hex-sort.html | 116 -----------
test-load.html | 19 --
6 files changed, 688 deletions(-)
diff --git a/claude-skills-export.zip b/claude-skills-export.zip
deleted file mode 100644
index a7b1613..0000000
Binary files a/claude-skills-export.zip and /dev/null differ
diff --git a/claude-skills-md-only.zip b/claude-skills-md-only.zip
deleted file mode 100644
index d0ff84b..0000000
Binary files a/claude-skills-md-only.zip and /dev/null differ
diff --git a/index-old-backup.html b/index-old-backup.html
deleted file mode 100644
index e49ff53..0000000
--- a/index-old-backup.html
+++ /dev/null
@@ -1,491 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-<head>
- <meta charset="UTF-8">
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
- <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate">
- <meta http-equiv="Pragma" content="no-cache">
- <meta http-equiv="Expires" content="0">
- <title>FlockedWallpaper.com - Premium Flocked & Velvet Wallcoverings</title>
-
- <!-- SEO Meta Tags -->
- <meta name="description" content="Shop premium flocked and velvet wallcoverings. Curated collection of 300+ luxury textured wallpapers from top designers including Osborne & Little, Cole & Son, Designers Guild. Free samples available.">
- <meta name="keywords" content="flocked wallpaper, velvet wallcoverings, textured wallpaper, luxury wallpaper, flock velvet wallpaper, designer wallcoverings, damask wallpaper, velvet flock, textured wall coverings, premium wallpaper">
- <meta name="author" content="FlockedWallpaper.com">
- <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1">
- <link rel="canonical" href="https://flockedwallpaper.com/">
-
- <!-- Open Graph / Facebook -->
- <meta property="og:type" content="website">
- <meta property="og:url" content="https://flockedwallpaper.com/">
- <meta property="og:site_name" content="FlockedWallpaper.com">
- <meta property="og:title" content="Premium Flocked & Velvet Wallcoverings | 300+ Luxury Designer Wallpapers">
- <meta property="og:description" content="Discover our curated collection of 300+ luxurious flocked and velvet textured wallpapers from the world's leading designers. Order samples today.">
- <meta property="og:image" content="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/flockedvelvetwallpaper_0c84de5f-7a44-4f3b-b8fe-c91417d0efdb.png?v=1760485642">
- <meta property="og:image:width" content="1200">
- <meta property="og:image:height" content="630">
- <meta property="og:image:alt" content="Premium flocked and velvet wallpaper collection">
-
- <!-- Twitter -->
- <meta name="twitter:card" content="summary_large_image">
- <meta name="twitter:url" content="https://flockedwallpaper.com/">
- <meta name="twitter:title" content="Premium Flocked & Velvet Wallcoverings | 300+ Luxury Designer Wallpapers">
- <meta name="twitter:description" content="Discover our curated collection of 300+ luxurious flocked and velvet textured wallpapers from the world's leading designers.">
- <meta name="twitter:image" content="https://cdn.shopify.com/s/files/1/0015/4117/7456/files/flockedvelvetwallpaper_0c84de5f-7a44-4f3b-b8fe-c91417d0efdb.png?v=1760485642">
-
- <!-- Additional SEO -->
- <meta name="geo.region" content="US">
- <meta name="geo.placename" content="United States">
- <meta name="language" content="English">
-
- <link rel="stylesheet" href="https://flockedwallpaper.com/styles.css?v=12">
-
- <!-- Structured Data (JSON-LD) -->
- <script type="application/ld+json">
- {
- "@context": "https://schema.org",
- "@type": "WebSite",
- "name": "FlockedWallpaper.com",
- "url": "https://flockedwallpaper.com",
- "description": "Premium flocked and velvet wallcoverings from top designers",
- "potentialAction": {
- "@type": "SearchAction",
- "target": "https://flockedwallpaper.com/?search={search_term_string}",
- "query-input": "required name=search_term_string"
- }
- }
- </script>
- <script type="application/ld+json">
- {
- "@context": "https://schema.org",
- "@type": "Organization",
- "name": "FlockedWallpaper.com",
- "url": "https://flockedwallpaper.com",
- "logo": "https://cdn.shopify.com/s/files/1/0015/4117/7456/files/flockedvelvetwallpaper_0c84de5f-7a44-4f3b-b8fe-c91417d0efdb.png?v=1760485642",
- "sameAs": [
- "https://designerwallcoverings.com"
- ]
- }
- </script>
-</head>
-<body>
- <!-- Header -->
- <header class="header">
- <div class="header-content">
- <div class="header-left">
- <div>
- <a href="/" style="text-decoration: none; color: inherit;">
- <div class="logo">FlockedWallpaper.com</div>
- <div class="tagline">Luxury Flocked & Velvet Wallcoverings</div>
- </a>
- </div>
- <button class="mobile-menu-toggle" onclick="toggleMobileMenu()" aria-label="Toggle menu">☰</button>
- </div>
- <nav class="main-nav" id="mainNav">
- <a href="/">Browse Collection</a>
- <a href="/about-flock-wallpaper.html">About Flock Wallpaper</a>
- <a href="/custom-flock.html">Custom Flock Services</a>
- <a href="/about-us.html">About Us</a>
- <a href="https://www.designerwallcoverings.com/pages/contact-us?contact_posted=true">Contact Us</a>
- </nav>
- <div class="product-count" id="productCount">Loading products...</div>
- </div>
- </header>
-
- <!-- Hero Section -->
- <section class="hero">
- <h1>Premium Flocked & Velvet Wallcoverings</h1>
- <p>Discover our exquisite collection of flocked and velvet textured wallpapers. Each design combines luxurious tactile appeal with stunning visual elegance.</p>
- <div class="product-count-hero" id="productCountHero">Loading collection...</div>
- </section>
-
- <!-- Products Container -->
- <div class="container">
- <div id="productsGrid" class="products-grid">
- <div class="loading-message">
- <div class="spinner"></div>
- Loading flocked wallpapers...
- </div>
- </div>
- </div>
-
- <!-- Footer -->
- <footer class="footer">
- <div class="footer-content">
- <div class="footer-section">
- <h3>About Us</h3>
- <p>FlockedWallpaper.com specializes in premium flocked and velvet textured wallcoverings. We curate the finest designs for discerning designers and homeowners.</p>
- </div>
- <div class="footer-section">
- <h3>Quick Links</h3>
- <ul>
- <li><a href="/">Browse Collection</a></li>
- <li><a href="/about-flock-wallpaper.html">About Flock Wallpaper</a></li>
- <li><a href="/custom-flock.html">Custom Flock Services</a></li>
- <li><a href="/about-us.html">About Us</a></li>
- <li><a href="https://www.designerwallcoverings.com/pages/contact-us?contact_posted=true">Contact Us</a></li>
- </ul>
- </div>
- <div class="footer-section">
- <h3>Resources</h3>
- <ul>
- <li><a href="https://designerwallcoverings.com/pages/installation">Installation Guide</a></li>
- <li><a href="https://designerwallcoverings.com/pages/care">Care Instructions</a></li>
- <li><a href="https://designerwallcoverings.com/pages/samples">Order Samples</a></li>
- </ul>
- </div>
- </div>
- <div class="footer-bottom">
- <p>© 2025 FlockedWallpaper.com - Part of Designer Wallcoverings Collection</p>
- </div>
- </footer>
-
- <script>
- // Load flocked products from JSON
- let allProducts = [];
- let filteredProducts = [];
- let displayedProducts = 0;
- let selectedColor = null;
- const batchSize = 40;
-
- // Color mapping for swatches and sorting
- const colorSwatches = {
- 'Black': '#000000',
- 'White': '#FFFFFF',
- 'Red': '#DC143C',
- 'Blue': '#4169E1',
- 'Green': '#228B22',
- 'Gold': '#FFD700',
- 'Silver': '#C0C0C0',
- 'Pink': '#FF69B4',
- 'Purple': '#9370DB',
- 'Beige': '#F5F5DC',
- 'Cream': '#FFFDD0',
- 'Gray': '#808080',
- 'Grey': '#808080',
- 'Brown': '#8B4513',
- 'Yellow': '#FFD700',
- 'Orange': '#FF8C00',
- 'Burgundy': '#800020',
- 'Navy': '#000080',
- 'Aqua': '#00FFFF',
- 'Teal': '#008080',
- 'Ivory': '#FFFFF0',
- 'Charcoal': '#36454F',
- 'Other': '#999999'
- };
-
- // Convert hex to HSL for better color sorting
- function hexToHSL(hex) {
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
- if (!result) return { h: 0, s: 0, l: 0 };
-
- let r = parseInt(result[1], 16) / 255;
- let g = parseInt(result[2], 16) / 255;
- let b = parseInt(result[3], 16) / 255;
-
- const max = Math.max(r, g, b);
- const min = Math.min(r, g, b);
- let h, s, l = (max + min) / 2;
-
- if (max === min) {
- h = s = 0; // achromatic
- } else {
- const d = max - min;
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
-
- switch (max) {
- case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;
- case g: h = ((b - r) / d + 2) / 6; break;
- case b: h = ((r - g) / d + 4) / 6; break;
- }
- }
-
- return { h: h * 360, s: s * 100, l: l * 100 };
- }
-
- // Get color hex value for a product
- function getProductColorHex(product) {
- // If product has primaryColor and it matches a swatch, use it
- if (product && product.primaryColor && colorSwatches[product.primaryColor]) {
- return colorSwatches[product.primaryColor];
- }
-
- // Try to find a color from tags
- if (product && product.tags && Array.isArray(product.tags)) {
- for (const tag of product.tags) {
- const tagLower = tag.toLowerCase();
- for (const [colorName, hex] of Object.entries(colorSwatches)) {
- if (tagLower.includes(colorName.toLowerCase())) {
- return hex;
- }
- }
- }
- }
-
- // Default gray for unknown colors
- return '#999999';
- }
-
- // Sort products by color (HSL)
- function sortProductsByColor(products) {
- return products.sort((a, b) => {
- const colorA = getProductColorHex(a);
- const colorB = getProductColorHex(b);
-
- const hslA = hexToHSL(colorA);
- const hslB = hexToHSL(colorB);
-
- // Sort by: Lightness first (dark to light), then by Hue
- if (Math.abs(hslA.l - hslB.l) > 10) {
- return hslA.l - hslB.l; // Dark to light
- }
-
- // If similar lightness, sort by hue (creates rainbow effect)
- return hslA.h - hslB.h;
- });
- }
-
- async function loadProducts() {
- const grid = document.getElementById('productsGrid');
- console.log('Loading products...');
-
- try {
- // Add cache busting parameter
- const cacheBuster = new Date().getTime();
- console.log('Fetching products with cache buster:', cacheBuster);
- const response = await fetch(`flocked-products.json?v=${cacheBuster}`);
-
- if (!response.ok) {
- console.error('Response not OK:', response.status, response.statusText);
- throw new Error(`Failed to load products: ${response.status}`);
- }
-
- console.log('Response received, parsing JSON...');
- allProducts = await response.json();
- filteredProducts = allProducts;
-
- console.log(`✓ Loaded ${allProducts.length} flocked products`);
-
- // Sort products by color on load
- try {
- allProducts = sortProductsByColor(allProducts);
- filteredProducts = allProducts;
- console.log('Products sorted by color');
- } catch (err) {
- console.error('Error sorting products:', err);
- }
-
- // Clear loading message
- console.log('Clearing loading message and displaying products...');
- grid.innerHTML = '';
-
- // Display first batch
- displayBatch();
- console.log(`✓ Displayed ${displayedProducts} products`);
-
- // Update counts
- updateCount();
-
- // Setup infinite scroll
- setupInfiniteScroll();
-
- } catch (error) {
- console.error('✗ ERROR loading products:', error);
- console.error('Error stack:', error.stack);
- grid.innerHTML = `<div class="loading-message">Error loading products: ${error.message}<br>Please check console and refresh the page.</div>`;
- }
- }
-
- // Build color filters
- function buildColorFilters() {
- const colorCounts = {};
-
- // Count products for each color
- allProducts.forEach(product => {
- if (!product || !product.tags || !Array.isArray(product.tags)) return;
-
- product.tags.forEach(tag => {
- if (!tag) return;
- const colorMatch = Object.keys(colorSwatches).find(color =>
- tag.toLowerCase().includes(color.toLowerCase())
- );
- if (colorMatch) {
- colorCounts[colorMatch] = (colorCounts[colorMatch] || 0) + 1;
- }
- });
- });
-
- // Create color chips
- const filtersContainer = document.getElementById('colorFilters');
-
- // Add "All" filter
- const allChip = document.createElement('div');
- allChip.className = 'color-chip active';
- allChip.innerHTML = `All Colors <span class="filter-count">(${allProducts.length})</span>`;
- allChip.onclick = () => filterByColor(null);
- filtersContainer.appendChild(allChip);
-
- // Sort colors by count and add chips
- Object.entries(colorCounts)
- .sort((a, b) => b[1] - a[1])
- .forEach(([color, count]) => {
- const chip = document.createElement('div');
- chip.className = 'color-chip';
- chip.innerHTML = `
- <span class="color-swatch" style="background-color: ${colorSwatches[color]}"></span>
- ${color}
- <span class="filter-count">(${count})</span>
- `;
- chip.onclick = () => filterByColor(color);
- filtersContainer.appendChild(chip);
- });
- }
-
- // Filter products by color
- function filterByColor(color) {
- selectedColor = color;
- displayedProducts = 0;
-
- if (color === null) {
- filteredProducts = allProducts;
- } else {
- filteredProducts = allProducts.filter(product => {
- if (!product || !product.tags || !Array.isArray(product.tags)) return false;
- return product.tags.some(tag =>
- tag && tag.toLowerCase().includes(color.toLowerCase())
- );
- });
- }
-
- // Sort filtered products by color hex
- filteredProducts = sortProductsByColor([...filteredProducts]);
-
- // Update active state on chips
- document.querySelectorAll('.color-chip').forEach(chip => {
- chip.classList.remove('active');
- });
- event.target.closest('.color-chip').classList.add('active');
-
- // Clear grid and display filtered products
- const grid = document.getElementById('productsGrid');
- grid.innerHTML = '';
- displayBatch();
- updateCount();
- }
-
- // Display a batch of products
- function displayBatch() {
- const grid = document.getElementById('productsGrid');
- const start = displayedProducts;
- const end = Math.min(start + batchSize, filteredProducts.length);
-
- for (let i = start; i < end; i++) {
- const product = filteredProducts[i];
- const card = createProductCard(product);
- grid.appendChild(card);
- }
-
- displayedProducts = end;
- }
-
- // Create product card element
- function createProductCard(product) {
- const card = document.createElement('div');
- card.className = 'product-card';
- card.onclick = () => window.open(product.productUrl, '_blank');
-
- const imageDiv = document.createElement('div');
- imageDiv.className = 'product-image loading';
-
- const img = document.createElement('img');
- img.src = product.image || 'placeholder.jpg';
- img.alt = product.imageAlt || product.title;
- img.loading = 'lazy';
-
- img.onload = () => {
- imageDiv.classList.remove('loading');
- };
-
- img.onerror = () => {
- imageDiv.classList.remove('loading');
- img.src = `data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 200 200"%3E%3Crect width="200" height="200" fill="%23E8D4B0"/%3E%3Ctext x="50%25" y="45%25" text-anchor="middle" fill="%236B4423" font-family="sans-serif" font-size="16" font-weight="bold"%3E${product.primarySku}%3C/text%3E%3Ctext x="50%25" y="55%25" text-anchor="middle" fill="%238B6F47" font-family="sans-serif" font-size="12"%3EFlocked%3C/text%3E%3C/svg%3E`;
- };
-
- imageDiv.appendChild(img);
-
- const info = document.createElement('div');
- info.className = 'product-info';
-
- const sku = document.createElement('div');
- sku.className = 'product-sku';
- sku.textContent = product.primarySku;
-
- const name = document.createElement('div');
- name.className = 'product-name';
- name.textContent = product.title;
-
- const link = document.createElement('div');
- link.className = 'product-link';
- link.innerHTML = 'View on DesignerWallcoverings.com →';
-
- info.appendChild(sku);
- info.appendChild(name);
- info.appendChild(link);
-
- card.appendChild(imageDiv);
- card.appendChild(info);
-
- return card;
- }
-
- // Update product count
- function updateCount() {
- const countEl = document.getElementById('productCount');
- const countHeroEl = document.getElementById('productCountHero');
- const count = selectedColor
- ? `${filteredProducts.length} ${selectedColor} Products`
- : `${allProducts.length} Products`;
-
- countEl.textContent = count;
- countHeroEl.textContent = count;
- }
-
- // Setup infinite scroll
- function setupInfiniteScroll() {
- let isLoading = false;
-
- window.addEventListener('scroll', () => {
- if (isLoading) return;
-
- const scrollHeight = document.documentElement.scrollHeight;
- const scrollTop = window.scrollY;
- const clientHeight = window.innerHeight;
-
- if (scrollTop + clientHeight >= scrollHeight - 500) {
- if (displayedProducts < filteredProducts.length) {
- isLoading = true;
- displayBatch();
- isLoading = false;
- }
- }
- });
- }
-
- // Initialize on page load
- document.addEventListener('DOMContentLoaded', () => {
- loadProducts();
- });
-
- // Mobile menu toggle
- function toggleMobileMenu() {
- const nav = document.getElementById('mainNav');
- nav.classList.toggle('active');
- }
- </script>
-
- <!-- Start of Zendesk Widget script -->
- <script id="ze-snippet" src="https://static.zdassets.com/ekr/snippet.js?key=4d4f52ea-1e3e-4837-8859-51f9abd5a82b"> </script>
- <!-- End of Zendesk Widget script -->
-</body>
-</html>
diff --git a/server-old-backup.js b/server-old-backup.js
deleted file mode 100644
index a1e3205..0000000
--- a/server-old-backup.js
+++ /dev/null
@@ -1,62 +0,0 @@
-const http = require('http');
-const fs = require('fs');
-const path = require('path');
-
-const PORT = process.env.PORT || 3200;
-
-const mimeTypes = {
- '.html': 'text/html',
- '.css': 'text/css',
- '.js': 'text/javascript',
- '.json': 'application/json',
- '.png': 'image/png',
- '.jpg': 'image/jpeg',
- '.jpeg': 'image/jpeg',
- '.gif': 'image/gif',
- '.svg': 'image/svg+xml',
- '.ico': 'image/x-icon'
-};
-
-const server = http.createServer((req, res) => {
- // Add CORS headers for all requests
- res.setHeader('Access-Control-Allow-Origin', '*');
- res.setHeader('Access-Control-Allow-Methods', 'GET, OPTIONS');
- res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
-
- // Prevent caching
- res.setHeader('Cache-Control', 'no-cache, no-store, must-revalidate');
- res.setHeader('Pragma', 'no-cache');
- res.setHeader('Expires', '0');
-
- // Remove query string parameters from URL
- let requestPath = req.url.split('?')[0];
- let filePath = '.' + requestPath;
- if (filePath === './') {
- filePath = './index.html';
- }
-
- const extname = String(path.extname(filePath)).toLowerCase();
- const contentType = mimeTypes[extname] || 'application/octet-stream';
-
- fs.readFile(filePath, (error, content) => {
- if (error) {
- if (error.code === 'ENOENT') {
- res.writeHead(404, { 'Content-Type': 'text/html' });
- res.end('<h1>404 - File Not Found</h1>', 'utf-8');
- } else {
- res.writeHead(500);
- res.end(`Server Error: ${error.code}`, 'utf-8');
- }
- } else {
- res.writeHead(200, { 'Content-Type': contentType });
- res.end(content, 'utf-8');
- }
- });
-});
-
-server.listen(PORT, '0.0.0.0', () => {
- console.log(`FlockedWallpaper.com server running at:`);
- console.log(` Local: http://localhost:${PORT}/`);
- console.log(` External: http://45.61.58.125:${PORT}/`);
- console.log('Press Ctrl+C to stop the server');
-});
diff --git a/test-hex-sort.html b/test-hex-sort.html
deleted file mode 100644
index 426b52e..0000000
--- a/test-hex-sort.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
- <title>Color Sorting Test</title>
- <style>
- body { font-family: sans-serif; padding: 20px; }
- .color-box {
- display: inline-block;
- width: 100px;
- height: 100px;
- margin: 5px;
- border: 1px solid #ccc;
- text-align: center;
- line-height: 100px;
- color: white;
- text-shadow: 1px 1px 2px black;
- font-size: 12px;
- }
- h2 { margin-top: 30px; }
- </style>
-</head>
-<body>
- <h1>Flocked Wallpaper Color Sorting Test</h1>
- <p>Products sorted by HSL (Lightness → Hue)</p>
-
- <h2>Color Swatches (Sorted)</h2>
- <div id="swatches"></div>
-
- <h2>Sample Products by Primary Color</h2>
- <div id="products"></div>
-
- <script>
- const colorSwatches = {
- 'Black': '#000000',
- 'White': '#FFFFFF',
- 'Red': '#DC143C',
- 'Blue': '#4169E1',
- 'Green': '#228B22',
- 'Gold': '#FFD700',
- 'Silver': '#C0C0C0',
- 'Pink': '#FF69B4',
- 'Purple': '#9370DB',
- 'Beige': '#F5F5DC',
- 'Cream': '#FFFDD0',
- 'Gray': '#808080',
- 'Brown': '#8B4513',
- 'Yellow': '#FFD700',
- 'Orange': '#FF8C00',
- 'Burgundy': '#800020',
- 'Navy': '#000080',
- 'Aqua': '#00FFFF',
- 'Teal': '#008080',
- 'Ivory': '#FFFFF0',
- 'Charcoal': '#36454F',
- 'Other': '#999999'
- };
-
- function hexToHSL(hex) {
- const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
- if (!result) return { h: 0, s: 0, l: 0 };
-
- let r = parseInt(result[1], 16) / 255;
- let g = parseInt(result[2], 16) / 255;
- let b = parseInt(result[3], 16) / 255;
-
- const max = Math.max(r, g, b);
- const min = Math.min(r, g, b);
- let h, s, l = (max + min) / 2;
-
- if (max === min) {
- h = s = 0;
- } else {
- const d = max - min;
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
-
- switch (max) {
- case r: h = ((g - b) / d + (g < b ? 6 : 0)) / 6; break;
- case g: h = ((b - r) / d + 2) / 6; break;
- case b: h = ((r - g) / d + 4) / 6; break;
- }
- }
-
- return { h: Math.round(h * 360), s: Math.round(s * 100), l: Math.round(l * 100) };
- }
-
- // Sort colors
- const sortedColors = Object.entries(colorSwatches).sort((a, b) => {
- const hslA = hexToHSL(a[1]);
- const hslB = hexToHSL(b[1]);
-
- if (Math.abs(hslA.l - hslB.l) > 10) {
- return hslA.l - hslB.l;
- }
- return hslA.h - hslB.h;
- });
-
- // Display swatches
- const swatchesDiv = document.getElementById('swatches');
- sortedColors.forEach(([name, hex]) => {
- const hsl = hexToHSL(hex);
- const box = document.createElement('div');
- box.className = 'color-box';
- box.style.backgroundColor = hex;
- box.innerHTML = `${name}<br>L:${hsl.l}`;
- swatchesDiv.appendChild(box);
- });
-
- // Show color order
- const productsDiv = document.getElementById('products');
- productsDiv.innerHTML = '<ol>' + sortedColors.map(([name, hex]) => {
- const hsl = hexToHSL(hex);
- return `<li><strong>${name}</strong> - ${hex} - HSL(${hsl.h}, ${hsl.s}%, ${hsl.l}%)</li>`;
- }).join('') + '</ol>';
- </script>
-</body>
-</html>
diff --git a/test-load.html b/test-load.html
deleted file mode 100644
index 5157bb1..0000000
--- a/test-load.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head><title>Test</title></head>
-<body>
-<div id="result"></div>
-<script>
-fetch('flocked-products.json')
- .then(r => r.json())
- .then(data => {
- document.getElementById('result').textContent = 'SUCCESS: Loaded ' + data.length + ' products';
- console.log('First product:', data[0]);
- })
- .catch(err => {
- document.getElementById('result').textContent = 'ERROR: ' + err.message;
- console.error(err);
- });
-</script>
-</body>
-</html>
← 1e56daa flockedwallpaper: gitignore stale-file patterns + make doten
·
back to Flockedwallpaper
·
add: pre-stage Meta Pixel snippet (placeholder; flip via _dw 950ca66 →