← back to Model Arena
data/artifacts/15fb25164101/hf-qwen-coder-32b.html
191 lines
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Shop by Color</title>
<style>
:root {
--bg: #faf8f4;
--surface: #ffffff;
--ink: #1c1a17;
--muted: #9b948a;
--accent: #b0472e;
--line: #dcdcdc;
--shadow: rgba(0, 0, 0, .12);
--hover-shadow: rgba(0, 0, 0, .18);
--glow: rgba(176, 71, 46, .35);
--ease: cubic-bezier(.22, 1, .36, 1);
}
body {
margin: 0;
font-family: -apple-system, 'Segoe UI', 'Helvetica Neue', Arial, sans-serif;
background-color: var(--bg);
color: var(--ink);
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
height: 100vh;
}
header {
position: fixed;
top: 0;
left: 0;
width: 100%;
background-color: var(--bg);
padding: 24px;
box-shadow: 0 2px 8px rgba(0, 0, 0, .06);
z-index: 1000;
}
.wordmark {
font-family: 'Playfair Display', Georgia, serif;
font-size: 38px;
letter-spacing: .18em;
text-transform: uppercase;
margin: 0;
}
main {
padding-top: 128px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
}
.color-wheel-container {
position: relative;
width: 300px;
height: 300px;
margin-bottom: 48px;
}
.color-wheel {
width: 100%;
height: 100%;
border-radius: 50%;
background-image: conic-gradient(from 90deg, #ff6f61, #6b5b95, #88b04b, #f7cac9, #ff6f61);
cursor: pointer;
}
.color-wheel::after {
content: '';
position: absolute;
top: 50%;
left: 50%;
width: 20px;
height: 20px;
background-color: var(--surface);
border-radius: 50%;
transform: translate(-50%, -50%);
}
.patterns {
display: flex;
gap: 16px;
transition: opacity .3s ease-in-out;
}
.pattern {
width: 64px;
height: 64px;
border-radius: 8px;
position: relative;
overflow: hidden;
box-shadow: 0 4px 12px var(--shadow);
}
.pattern::before,
.pattern::after {
content: '';
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 50%;
background-color: var(--surface);
}
.pattern:nth-child(1)::before { background-image: repeating-linear-gradient(45deg, #ff6f61, #ff6f61 8px, transparent 8px, transparent 16px); }
.pattern:nth-child(2)::before { background-image: repeating-radial-gradient(circle, #6b5b95, #6b5b95 4px, transparent 4px, transparent 8px); }
.pattern:nth-child(3)::before { background-image: repeating-linear-gradient(to right, #88b04b, #88b04b 8px, transparent 8px, transparent 16px); }
.pattern:nth-child(4)::before { background-image: repeating-linear-gradient(to bottom, #f7cac9, #f7cac9 8px, transparent 8px, transparent 16px); }
.pattern::after {
height: 50%;
top: auto;
bottom: 0;
opacity: 0.5;
}
.share-bar {
display: flex;
gap: 16px;
margin-top: 48px;
}
.share-button {
background-color: var(--surface);
border-radius: 8px;
padding: 8px 16px;
font-size: 12px;
letter-spacing: .15em;
text-transform: uppercase;
color: var(--muted);
cursor: pointer;
box-shadow: 0 4px 12px var(--shadow);
transition: background-color .3s ease-in-out, transform .2s ease-in-out;
}
.share-button:hover {
background-color: var(--accent);
color: var(--surface);
transform: translateY(-2px);
}
</style>
</head>
<body>
<header>
<h1 class="wordmark">DESIGNER WALLCOVERINGS</h1>
</header>
<main>
<div class="color-wheel-container">
<div class="color-wheel" id="colorWheel"></div>
</div>
<div class="patterns" id="patternsContainer"></div>
<div class="share-bar">
<button class="share-button">SHARE ON INSTAGRAM</button>
<button class="share-button">PIN TO PINTEREST</button>
</div>
</main>
<script>
const colorWheel = document.getElementById('colorWheel');
const patternsContainer = document.getElementById('patternsContainer');
let selectedColorIndex = 0;
const colors = ['#ff6f61', '#6b5b95', '#88b04b', '#f7cac9'];
const patterns = [
{ name: 'Sunrise Bloom' },
{ name: 'Midnight Velvet' },
{ name: 'Forest Mist' },
{ name: 'Blush Silk' }
];
colorWheel.addEventListener('click', (event) => {
const rect = event.target.getBoundingClientRect();
const x = event.clientX - rect.left;
const y = event.clientY - rect.top;
const angle = Math.atan2(y - rect.height / 2, x - rect.width / 2);
let deg = angle * (180 / Math.PI) + 90; // Convert to degrees and adjust for top position
if (deg < 0) deg += 360;
selectedColorIndex = Math.floor(deg / 90) % colors.length;
updatePatterns();
});
function updatePatterns() {
patternsContainer.innerHTML = '';
const color = colors[selectedColorIndex];
patterns.forEach((pattern, index) => {
const patternDiv = document.createElement('div');
patternDiv.className = 'pattern';
patternDiv.style.backgroundColor = color;
patternDiv.title = pattern.name; // Tooltip for color name
patternsContainer.appendChild(patternDiv);
});
}
updatePatterns(); // Initial load
</script>
</body>
</html>