.icon-label font-size: 0.8rem; font-weight: 500; color: #eef5ff; text-shadow: 0 1px 2px black;
/* THE "BLUR PC" CORE WIDGET */ .blur-pc background: #0f1119e6; border-radius: 1.8rem; backdrop-filter: blur(2px); overflow: hidden; width: 100%; max-width: 1100px; min-width: 280px; box-shadow: 0 20px 35px -12px black; transition: all 0.2s ease;
// --- State --- let currentBlur = 8; // default px let glowActive = false; let originalBorderStyle = '';
// Helper: apply blur to desktop area (backdrop-filter) function applyBlur(blurPx) // use backdrop-filter for "glassmorphic" blur on the desktop panel itself // this creates the "Blur PC" feature: everything inside .desktop-area gets the frosted effect // but the icons and floating window remain readable, while background-like content is blurred. // Actually we blur the .desktop-area background and its children get affected by backdrop? Wait: backdrop-filter blurs BEHIND the element. // But to get "blur pc" meaning the whole desktop environment blurs like frosted glass, we apply backdrop-filter to .desktop-area. // That way all underlying elements (the container's background, icons, etc) will look like they are behind a blurred glass. // For a "Blur PC" effect, we want the entire UI to feel like a blurred screen? No, but for the feature we make the desktop background glassy. // Better: we blur the .desktop-area's background and its internal elements also can get slight blur? But we use backdrop-filter on .desktop-area, // that blurs everything that is behind the .desktop-area (its parent). But the parent (blur-pc) has background and taskbar, so it would blur them too. // For better isolated demo, we blur the .desktop-area itself via backdrop-filter, making its own children appear crisp but the background behind them gets blurred? // Actually to create an impressive "Blur PC" feel: let's apply blur to the .desktop-area's background image/style and a bit of backdrop, // But I want to make the desktop content (icons, text) blur dynamically like a "blur filter" on the whole desktop canvas. // Using filter: blur() on .desktop-content would blur icons and text, which shows the blur effect dramatically. // However many modern blur PCs use backdrop, but here we provide a distinct visual: the entire desktop content (icons & window) gets a gaussian blur. // This demonstrates "Blur PC" in a unique way: everything becomes blurred with intensity control. // But we also want to preserve readability of the floating window? Option: apply filter: blur() to .desktop-content (the grid) but not to the floating window? No that's weird. // Better to apply CSS filter: blur() to the .desktop-area's inner content wrapper? For dramatic effect: Let's apply blur to .desktop-content and the floating-window? But the floating window is interactive. // However we want showcase "Blur PC": user can blur the entire desktop interface exactly like a "blur screen" effect. // So I'll make the blur affect the whole .desktop-area container (background + all children) using filter: blur(). // But then buttons would become blurry and hard to click? But that's part of the demo: the slider can reduce blur to make it readable. We can also give a note. // To make it functional and cool, we'll apply blur filter to .desktop-area, but the floating window buttons will be less accessible at high blur. // Alternative: Apply blur to .desktop-content but not to the floating window -> less consistent. I decide to apply filter: blur() to whole .desktop-area // to simulate a "blurred desktop screen", but we also keep the taskbar crisp. That provides a nice UI/UX contrast. // BUT, in that case the floating window buttons become blurry, but that shows power of blur effect. And we add a "reset" to clear blur. // Let's implement it as filter: blur() on .desktop-area. It's simple, performant, and illustrates the 'Blur PC' feature exactly. // Additionally, we add a transition for smoothness. desktopArea.style.transition = 'filter 0.18s ease-out'; desktopArea.style.filter = `blur($blurPxpx)`; // For readability, we might also adjust pointer events? not needed, user can lower blur. Blur PC
.window-header display: flex; justify-content: space-between; border-bottom: 1px solid #ffffff30; padding-bottom: 8px; margin-bottom: 12px; font-weight: 600; color: #b9e2ff;
button.small-action:hover background: cyan; color: #0a0f1a;
// interactive icon clicks (just simulate desktop actions with a toast) function bindIconActions() const icons = [ el: docIcon, name: "Documents", msg: "📄 Opening 'My Documents' — blur protected storage" , el: photoIcon, name: "Gallery", msg: "🖼️ Gallery would show blurred previews (matching current blur)" , el: settingsIcon, name: "Blur FX", msg: `⚙️ Blur settings: intensity = $currentBlur.toFixed(1)px` , el: browserIcon, name: "Web Canvas", msg: "🌐 Browser canvas: rendered under blur effect" , el: terminalIcon, name: "Terminal", msg: ">_ BlurPC terminal: 'blur' command active." ]; icons.forEach(icon => if (!icon.el) return; icon.el.addEventListener('click', (e) => e.stopPropagation(); showToastMessage(`$icon.msg`, "#b0e0ff"); // extra special: settings updates current blur info dynamically if (icon.name === "Blur FX") setTimeout(() => showToastMessage(`Current blur radius: $currentBlur.toFixed(1)px`, "#7df9ff"); , 400); ); ); // But to get "blur pc" meaning the
init(); })(); </script> </body> </html>
<!-- Desktop Area: background layer that gets blurred --> <div class="desktop-area" id="desktopArea"> <div class="desktop-content"> <!-- classic desktop shortcuts / icons --> <div class="icon-group" id="docIcon"> <div class="icon-emoji">📁</div> <div class="icon-label">Documents</div> </div> <div class="icon-group" id="photoIcon"> <div class="icon-emoji">🖼️</div> <div class="icon-label">Gallery</div> </div> <div class="icon-group" id="settingsIcon"> <div class="icon-emoji">⚙️</div> <div class="icon-label">Blur FX</div> </div> <div class="icon-group" id="browserIcon"> <div class="icon-emoji">🌐</div> <div class="icon-label">Web Canvas</div> </div> <div class="icon-group" id="terminalIcon"> <div class="icon-emoji">💻</div> <div class="icon-label">Terminal</div> </div> </div>
// optional: sync live status when slider moves function syncLiveStatus() // already done in updateBlurUI No, but for the feature we make the
// Extra: show initial welcome message setTimeout(() => showToastMessage("🖥️ Blur PC ready — adjust blur intensity", "#7df9ff"); , 300);
input[type="range"]::-webkit-slider-thumb -webkit-appearance: none; width: 16px; height: 16px; border-radius: 50%; background: #5bc0ff; cursor: pointer; box-shadow: 0 0 6px cyan; border: none;