<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Diagonal Circles Generator</title>
<link href="https://cdn.jsdelivr.net/npm/tailwindcss@2.2.19/dist/tailwind.min.css" rel="stylesheet">
</head>
<body class="bg-gray-100">
<div class="flex justify-center items-center min-h-screen">
<div class="max-w-lg p-6 bg-white rounded shadow-lg">
<h1 class="text-2xl font-semibold mb-4">Diagonal Circles Generator</h1>
<form id="inputForm" class="space-y-4">
<div class="flex items-center space-x-4">
<label for="numberOfCircles" class="text-gray-700">Number of Circles:</label>
<input type="number" id="numberOfCircles" name="numberOfCircles" min="5" value="8" class="px-3 py-1 border rounded focus:outline-none focus:border-blue-500">
</div>
<div id="colorPickers" class="grid grid-cols-5 gap-4"></div>
<button type="submit" class="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded focus:outline-none focus:ring focus:border-blue-300">Generate Circles</button>
</form>
<div class="mt-4">
<canvas id="canvas" width="400" height="400" class="border border-gray-300 rounded"></canvas>
</div>
</div>
</div>
<script>
const form = document.getElementById('inputForm');
const canvas = document.getElementById('canvas');
const ctx = canvas.getContext('2d');
function drawCircles(numberOfCircles, circleColors) {
const canvasWidth = canvas.width;
const canvasHeight = canvas.height;
const circleRadius = 20;
const padding = 20;
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
const spaceBetweenCircles = (canvasWidth - (2 * padding)) / (numberOfCircles - 1);
for (let i = 0; i < numberOfCircles; i++) {
ctx.beginPath();
ctx.arc(padding + i * spaceBetweenCircles, padding + i * spaceBetweenCircles, circleRadius, 0, Math.PI * 2);
ctx.fillStyle = circleColors[i];
ctx.fill();
ctx.closePath();
}
}
form.addEventListener('submit', function(event) {
event.preventDefault();
const numberOfCircles = parseInt(document.getElementById('numberOfCircles').value);
const circleColors = Array.from({ length: numberOfCircles }, (_, i) => document.getElementById(`circleColor${i + 1}`).value);
drawCircles(numberOfCircles, circleColors);
});
const colorPickersContainer = document.getElementById('colorPickers');
const numberOfCirclesInput = document.getElementById('numberOfCircles');
numberOfCirclesInput.addEventListener('input', function() {
const numberOfCircles = parseInt(numberOfCirclesInput.value);
colorPickersContainer.innerHTML = '';
for (let i = 1; i <= numberOfCircles; i++) {
const colorPicker = document.createElement('input');
colorPicker.type = 'color';
colorPicker.id = `circleColor${i}`;
colorPickersContainer.appendChild(colorPicker);
}
});
numberOfCirclesInput.dispatchEvent(new Event('input'));
</script>
</body>
</html>