Spaces:
Running
Running
| class GameControls extends HTMLElement { | |
| connectedCallback() { | |
| this.attachShadow({ mode: 'open' }); | |
| this.shadowRoot.innerHTML = ` | |
| <style> | |
| button { | |
| transition: all 0.2s ease; | |
| } | |
| button:hover { | |
| transform: translateY(-2px); | |
| box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05); | |
| } | |
| button:active { | |
| transform: translateY(0); | |
| } | |
| </style> | |
| <div class="flex flex-col gap-4 bg-gray-800 p-6 rounded-lg shadow-lg"> | |
| <h2 class="text-xl font-semibold text-center text-purple-400 mb-2">Controls</h2> | |
| <div class="grid grid-cols-3 gap-3"> | |
| <button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center"> | |
| <i data-feather="arrow-left"></i> | |
| </button> | |
| <button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center"> | |
| <i data-feather="arrow-up"></i> | |
| </button> | |
| <button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center"> | |
| <i data-feather="arrow-right"></i> | |
| </button> | |
| <button class="bg-gray-700 hover:bg-gray-600 text-white p-4 rounded-lg flex items-center justify-center"> | |
| <i data-feather="arrow-down"></i> | |
| </button> | |
| <button class="bg-purple-600 hover:bg-purple-500 text-white p-4 rounded-lg flex items-center justify-center col-span-2"> | |
| <i data-feather="corner-down-left" class="mr-2"></i> | |
| <span>Hard Drop</span> | |
| </button> | |
| </div> | |
| <div class="flex gap-3 mt-2"> | |
| <button id="startBtn" class="bg-green-600 hover:bg-green-500 text-white py-3 px-6 rounded-lg flex-1 flex items-center justify-center"> | |
| <i data-feather="play" class="mr-2"></i> | |
| <span>Start</span> | |
| </button> | |
| <button id="resetBtn" class="bg-pink-600 hover:bg-pink-500 text-white py-3 px-6 rounded-lg flex-1 flex items-center justify-center"> | |
| <i data-feather="refresh-cw" class="mr-2"></i> | |
| <span>Reset</span> | |
| </button> | |
| </div> | |
| </div> | |
| `; | |
| this.shadowRoot.getElementById('startBtn').addEventListener('click', () => { | |
| this.dispatchEvent(new CustomEvent('start-game')); | |
| }); | |
| this.shadowRoot.getElementById('resetBtn').addEventListener('click', () => { | |
| this.dispatchEvent(new CustomEvent('reset-game')); | |
| }); | |
| feather.replace(); | |
| } | |
| } | |
| customElements.define('custom-game-controls', GameControls); |