const dropdownData = [
    { label: 'Options', placeholder: 'Select an option', description: 'Choose one of the following items', items: ['Item 1', 'Item 2', 'Item 3'] },
    { placeholder: 'Select without label', items: ['Item A', 'Item B', 'Item C', 'Item D', 'Item E', 'Item F', 'Item G', 'Item H', 'Item I', 'Item J', 'Item K'] },
    { label: 'Options 2', placeholder: 'Choose an item', description: 'Additional description lorem ipsum', items: ['Option 1', 'Option 2', 'Option 3'] },
];

function createDropdownComponent({ label, placeholder, description, items }) {
    const dropdownContainer = document.createElement('div');
    dropdownContainer.className = 'dropdown-container mb-6';

    if (label) {
        const labelElement = document.createElement('label');
        labelElement.className = 'dropdown-label block text-gray-700 text-sm font-bold mb-2';
        labelElement.innerText = label;
        dropdownContainer.appendChild(labelElement);
    }

    const buttonElement = document.createElement('div');
    buttonElement.className = 'dropdown-button';
    buttonElement.innerText = placeholder || 'Select an option';
    dropdownContainer.appendChild(buttonElement);

    const dropdownList = document.createElement('div');
    dropdownList.className = 'dropdown-list';
    dropdownList.style.display = 'none';

    if (description) {
        dropdownList.classList.add('dropdown-list-with-description');
    } else {
        dropdownList.classList.add('dropdown-list-no-description');
    }

    items.forEach(item => {
        const itemElement = document.createElement('div');
        itemElement.className = 'dropdown-item';
        
        const itemText = document.createElement('span');
        itemText.className = 'dropdown-item-text';
        itemText.innerText = item;

        itemElement.appendChild(itemText);
        itemElement.addEventListener('click', () => {
            buttonElement.innerHTML = '';
            buttonElement.className = 'dropdown-button selected-dropdown-item';
            
            const selectedItemText = document.createElement('span');
            selectedItemText.className = 'selected-dropdown-item-text';
            selectedItemText.innerText = item;
            buttonElement.appendChild(selectedItemText);

            dropdownList.style.display = 'none';
        });

        dropdownList.appendChild(itemElement);
    });

    buttonElement.addEventListener('click', (event) => {
        event.stopPropagation();
        dropdownList.style.display = dropdownList.style.display === 'none' ? 'flex' : 'none';
    });

    document.addEventListener('click', (event) => {
        if (!dropdownContainer.contains(event.target)) {
            dropdownList.style.display = 'none';
        }
    });

    dropdownContainer.appendChild(dropdownList);

    if (description) {
        const descriptionElement = document.createElement('p');
        descriptionElement.className = 'dropdown-description text-gray-600 text-xs italic mt-2';
        descriptionElement.innerText = description;
        dropdownContainer.appendChild(descriptionElement);
    }

    return dropdownContainer;
}

document.addEventListener('DOMContentLoaded', () => {
    console.log("Document loaded, rendering dropdowns...");
    const dropdownContainer = document.getElementById('dropdown-container');
    dropdownData.forEach(dropdownConfig => {
        const dropdownComponent = createDropdownComponent(dropdownConfig);
        dropdownContainer.appendChild(dropdownComponent);
    });
});
