{# app/templates/admin/components.html #}
{% extends "admin/base.html" %}

{% block title %}UI Components{% endblock %}

{# ✅ CRITICAL: Link to Alpine.js component #}
{% block alpine_data %}adminComponents(){% endblock %}

{% block extra_head %}
{# Chart.js for charts section #}
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.3/Chart.min.js" defer></script>
<style>
/* Ensure sticky positioning works properly */
.sticky {
    position: -webkit-sticky !important;
    position: sticky !important;
}
/* Add smooth scrolling */
html {
    scroll-behavior: smooth;
}
</style>
{% endblock %}

{% block content %}
<!-- Page Header -->
<div class="flex items-center justify-between my-6">
    <h2 class="text-2xl font-semibold text-gray-700 dark:text-gray-200">
        UI Components Library
    </h2>
    <a href="/admin/dashboard" class="flex items-center px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 dark:text-gray-300 dark:bg-gray-800 dark:border-gray-600 dark:hover:bg-gray-700">
        <span x-html="$icon('arrow-left', 'w-4 h-4 mr-2')"></span>
        Back to Dashboard
    </a>
</div>

<!-- Introduction -->
<div class="mb-8 p-6 bg-gradient-to-r from-purple-600 to-indigo-600 rounded-lg shadow-lg">
    <div class="flex items-start">
        <span x-html="$icon('collection', 'w-10 h-10 mr-4 flex-shrink-0 text-white')"></span>
        <div>
            <h3 class="text-xl font-bold mb-2 text-white">Quick Reference Library</h3>
            <p class="text-white opacity-90">
                Copy-paste ready UI components for your admin pages. All components support dark mode and are fully accessible.
            </p>
        </div>
    </div>
</div>

<!-- Layout: Sidebar + Content -->
<div class="flex gap-6 relative">

    <!-- Sticky Navigation Sidebar - FIXED FOR REAL -->
    <div class="w-64 flex-shrink-0 self-start">
        <div class="sticky top-24" style="position: -webkit-sticky; position: sticky;">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-4">
                <h3 class="text-sm font-semibold text-gray-600 dark:text-gray-400 uppercase mb-3">Sections</h3>
                <nav class="space-y-1">
                    <template x-for="section in sections" :key="section.id">
                        <a
                            :href="'#' + section.id"
                            @click.prevent="goToSection(section.id)"
                            class="flex items-center px-3 py-2 text-sm rounded-lg transition-colors"
                            :class="isSectionActive(section.id)
                                ? 'bg-purple-100 text-purple-700 dark:bg-purple-900 dark:text-purple-200 font-medium'
                                : 'text-gray-700 dark:text-gray-300 hover:bg-gray-100 dark:hover:bg-gray-700'"
                        >
                            <span x-html="$icon(section.icon, 'w-4 h-4 mr-2')"></span>
                            <span x-text="section.name"></span>
                        </a>
                    </template>
                </nav>
            </div>

            <!-- Quick Tips -->
            <div class="mt-4 bg-blue-50 dark:bg-gray-800 border border-blue-200 dark:border-gray-700 rounded-lg p-4">
                <div class="flex items-start">
                    <span x-html="$icon('light-bulb', 'w-5 h-5 text-blue-600 dark:text-blue-400 mr-2 flex-shrink-0')"></span>
                    <div>
                        <p class="text-xs font-semibold text-blue-900 dark:text-blue-200 mb-1">Pro Tip</p>
                        <p class="text-xs text-blue-800 dark:text-blue-300">
                            Click any code block to copy it to your clipboard!
                        </p>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <!-- Main Content - WIDELY SPACED SECTIONS -->
    <div class="flex-1 space-y-32">

        <!-- MACROS SECTION -->
        <section id="macros" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('template', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Jinja Macros
                </h2>

                <div class="mb-6 p-4 bg-blue-50 dark:bg-blue-900/20 border border-blue-200 dark:border-blue-800 rounded-lg">
                    <div class="flex items-start">
                        <span x-html="$icon('information-circle', 'w-5 h-5 text-blue-600 dark:text-blue-400 mr-2 flex-shrink-0 mt-0.5')"></span>
                        <div>
                            <p class="text-sm text-blue-800 dark:text-blue-200">
                                <strong>Reusable Components:</strong> Use Jinja macros from <code class="bg-blue-100 dark:bg-blue-800 px-1 rounded">shared/macros/</code> instead of copy-pasting HTML. This ensures consistency and makes updates easier.
                            </p>
                        </div>
                    </div>
                </div>

                <!-- Available Macros -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-4">Available Macro Files</h3>
                    <div class="grid gap-4 md:grid-cols-2">
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">pagination.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Table pagination with page numbers</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">pagination(), pagination_simple()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">alerts.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Alerts, loading states, toasts</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">loading_state(), error_state(), alert(), toast()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">badges.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Status badges and indicators</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">badge(), status_badge(), verification_badge(), role_badge()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">buttons.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Button variants and action buttons</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">btn_primary(), btn_secondary(), action_button()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">forms.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Form inputs with validation</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">form_input(), form_select(), form_textarea()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">tables.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Table components and empty states</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">table_wrapper(), table_header(), table_empty_state()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">cards.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Stat cards and info cards</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">stat_card(), card(), info_card(), coming_soon_card()</code>
                        </div>
                        <div class="p-4 bg-gray-50 dark:bg-gray-900 rounded-lg">
                            <h4 class="font-semibold text-gray-800 dark:text-gray-200 mb-2">headers.html</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400 mb-2">Page headers and breadcrumbs</p>
                            <code class="text-xs bg-gray-200 dark:bg-gray-700 px-2 py-1 rounded">page_header(), section_header(), breadcrumbs()</code>
                        </div>
                    </div>
                </div>

                <!-- Usage Example -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Usage Example</h3>
                    <div class="bg-gray-900 rounded-lg p-4 mb-3 overflow-x-auto">
                        <pre class="text-sm text-gray-100"><code>{# Import at the top of your template #}
{% raw %}{% from 'shared/macros/pagination.html' import pagination %}
{% from 'shared/macros/alerts.html' import loading_state, error_state %}
{% from 'shared/macros/badges.html' import status_badge, verification_badge %}
{% from 'shared/macros/buttons.html' import btn_primary, action_button %}
{% from 'shared/macros/cards.html' import stat_card %}
{% from 'shared/macros/headers.html' import page_header %}

{# Then use in your template #}
{{ page_header('User Management', action_label='Create User', action_url='/users/create') }}

{{ loading_state('Loading users...') }}
{{ error_state('Error loading users') }}

{# In your table #}
{{ pagination() }}{% endraw %}</code></pre>
                    </div>
                    <button @click="copyCode(`{% raw %}{% from 'shared/macros/pagination.html' import pagination %}
{% from 'shared/macros/alerts.html' import loading_state, error_state %}
{% from 'shared/macros/badges.html' import status_badge, verification_badge %}

{{ page_header('Page Title', action_label='Action', action_url='/action') }}
{{ loading_state('Loading...') }}
{{ pagination() }}{% endraw %}`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- PAGINATION SECTION -->
        <section id="pagination" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('dots-horizontal', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Pagination
                </h2>

                <!-- Full Pagination -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Full Pagination (with page numbers)</h3>
                    <p class="text-sm text-gray-600 dark:text-gray-400 mb-4">
                        Use the <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">pagination()</code> macro. Requires Alpine.js properties: <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">pagination</code>, <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">startIndex</code>, <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">endIndex</code>, <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">totalPages</code>, <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">pageNumbers</code>.
                    </p>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <!-- Live example of pagination -->
                        <div class="grid px-4 py-3 text-xs font-semibold tracking-wide text-gray-500 uppercase border dark:border-gray-700 bg-gray-50 sm:grid-cols-9 dark:text-gray-400 dark:bg-gray-800 rounded-lg">
                            <span class="flex items-center col-span-3">
                                Showing <span class="mx-1 font-bold">1</span>-<span class="mx-1 font-bold">10</span> of <span class="mx-1 font-bold">97</span>
                            </span>
                            <span class="col-span-2"></span>
                            <span class="flex col-span-4 mt-2 sm:mt-auto sm:justify-end">
                                <nav aria-label="Table navigation">
                                    <ul class="inline-flex items-center">
                                        <li>
                                            <button class="px-3 py-1 rounded-md rounded-l-lg focus:outline-none opacity-50 cursor-not-allowed" disabled>
                                                <svg class="w-4 h-4 fill-current" viewBox="0 0 20 20"><path d="M12.707 5.293a1 1 0 010 1.414L9.414 10l3.293 3.293a1 1 0 01-1.414 1.414l-4-4a1 1 0 010-1.414l4-4a1 1 0 011.414 0z" clip-rule="evenodd" fill-rule="evenodd"></path></svg>
                                            </button>
                                        </li>
                                        <li><button class="px-3 py-1 rounded-md text-white bg-purple-600 border border-purple-600">1</button></li>
                                        <li><button class="px-3 py-1 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700">2</button></li>
                                        <li><button class="px-3 py-1 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700">3</button></li>
                                        <li><span class="px-3 py-1">...</span></li>
                                        <li><button class="px-3 py-1 rounded-md hover:bg-gray-100 dark:hover:bg-gray-700">10</button></li>
                                        <li>
                                            <button class="px-3 py-1 rounded-md rounded-r-lg hover:bg-gray-100 dark:hover:bg-gray-700">
                                                <svg class="w-4 h-4 fill-current" viewBox="0 0 20 20"><path d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z" clip-rule="evenodd" fill-rule="evenodd"></path></svg>
                                            </button>
                                        </li>
                                    </ul>
                                </nav>
                            </span>
                        </div>
                    </div>
                    <button @click="copyCode(`{% raw %}{% from 'shared/macros/pagination.html' import pagination %}

{# In your template (inside the table wrapper) #}
{{ pagination() }}{% endraw %}

{# Required JS properties in your Alpine component: #}
pagination: { page: 1, per_page: 10, total: 0, pages: 0 },

get totalPages() { return this.pagination.pages; },
get startIndex() { return this.pagination.total === 0 ? 0 : (this.pagination.page - 1) * this.pagination.per_page + 1; },
get endIndex() { return Math.min(this.pagination.page * this.pagination.per_page, this.pagination.total); },
get pageNumbers() {
    const pages = [];
    const totalPages = this.totalPages;
    const current = this.pagination.page;
    if (totalPages <= 7) {
        for (let i = 1; i <= totalPages; i++) pages.push(i);
    } else {
        pages.push(1);
        if (current > 3) pages.push('...');
        for (let i = Math.max(2, current - 1); i <= Math.min(totalPages - 1, current + 1); i++) pages.push(i);
        if (current < totalPages - 2) pages.push('...');
        pages.push(totalPages);
    }
    return pages;
},
previousPage() { if (this.pagination.page > 1) { this.pagination.page--; this.load(); } },
nextPage() { if (this.pagination.page < this.totalPages) { this.pagination.page++; this.load(); } },
goToPage(n) { if (n !== '...' && n >= 1 && n <= this.totalPages) { this.pagination.page = n; this.load(); } }`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Simple Pagination -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Simple Pagination (prev/next only)</h3>
                    <p class="text-sm text-gray-600 dark:text-gray-400 mb-4">
                        Use <code class="bg-gray-100 dark:bg-gray-700 px-1 rounded">pagination_simple()</code> for a simpler prev/next navigation.
                    </p>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <div class="flex items-center justify-between px-4 py-3 bg-white border dark:border-gray-700 dark:bg-gray-800 rounded-lg">
                            <span class="text-sm text-gray-700 dark:text-gray-400">
                                Showing <span class="font-semibold">1</span>-<span class="font-semibold">10</span> of <span class="font-semibold">97</span> results
                            </span>
                            <div class="flex items-center space-x-2">
                                <button disabled class="px-3 py-1 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md opacity-50 cursor-not-allowed">
                                    <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"></path></svg>
                                </button>
                                <span class="text-sm text-gray-700 dark:text-gray-400">Page 1 of 10</span>
                                <button class="px-3 py-1 text-sm font-medium text-gray-700 dark:text-gray-300 bg-white dark:bg-gray-700 border border-gray-300 dark:border-gray-600 rounded-md hover:bg-gray-50 dark:hover:bg-gray-600">
                                    <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"></path></svg>
                                </button>
                            </div>
                        </div>
                    </div>
                    <button @click="copyCode(`{% raw %}{% from 'shared/macros/pagination.html' import pagination_simple %}
{{ pagination_simple() }}{% endraw %}`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- FORMS SECTION -->
        <section id="forms" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('clipboard-list', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Forms
                </h2>

                <!-- Basic Input -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Basic Input</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <label class="block mb-4 text-sm">
                            <span class="text-gray-700 dark:text-gray-400">Field Label</span>
                            <input
                                type="text"
                                x-model="exampleForm.textInput"
                                placeholder="Enter text..."
                                class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input"
                            />
                        </label>
                    </div>
                    <button @click="copyCode(`<label class=&quot;block mb-4 text-sm&quot;>
    <span class=&quot;text-gray-700 dark:text-gray-400&quot;>Field Label</span>
    <input
        type=&quot;text&quot;
        x-model=&quot;formData.field&quot;
        class=&quot;block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-input&quot;
    />
</label>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Required Field with Error -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Required Field with Error</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <label class="block mb-4 text-sm">
                            <span class="text-gray-700 dark:text-gray-400">
                                Email Address <span class="text-red-600">*</span>
                            </span>
                            <input
                                type="email"
                                x-model="exampleForm.email"
                                required
                                class="block w-full mt-1 text-sm dark:text-gray-300 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple form-input border-red-600 focus:border-red-400 focus:shadow-outline-red"
                            />
                            <span class="text-xs text-red-600 dark:text-red-400 mt-1" x-text="exampleErrors.email"></span>
                        </label>
                    </div>
                    <button @click="copyCode(`<label class=&quot;block mb-4 text-sm&quot;>
    <span class=&quot;text-gray-700 dark:text-gray-400&quot;>
        Field Label <span class=&quot;text-red-600&quot;>*</span>
    </span>
    <input
        type=&quot;text&quot;
        x-model=&quot;formData.field&quot;
        class=&quot;block w-full mt-1 text-sm dark:text-gray-300 dark:bg-gray-700 focus:border-purple-400 form-input border-red-600&quot;
    />
    <span class=&quot;text-xs text-red-600 dark:text-red-400 mt-1&quot;>Error message</span>
</label>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Textarea -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Textarea</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <label class="block text-sm">
                            <span class="text-gray-700 dark:text-gray-400">Description</span>
                            <textarea
                                x-model="exampleForm.textarea"
                                rows="3"
                                class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-textarea"
                            ></textarea>
                        </label>
                    </div>
                    <button @click="copyCode(`<label class=&quot;block text-sm&quot;>
    <span class=&quot;text-gray-700 dark:text-gray-400&quot;>Description</span>
    <textarea
        rows=&quot;3&quot;
        class=&quot;block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 form-textarea&quot;
    ></textarea>
</label>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Select -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Select</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <label class="block text-sm">
                            <span class="text-gray-700 dark:text-gray-400">Select Option</span>
                            <select
                                x-model="exampleForm.select"
                                class="block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 focus:border-purple-400 focus:outline-none focus:shadow-outline-purple dark:focus:shadow-outline-gray form-select"
                            >
                                <option value="option1">Option 1</option>
                                <option value="option2">Option 2</option>
                                <option value="option3">Option 3</option>
                            </select>
                        </label>
                    </div>
                    <button @click="copyCode(`<label class=&quot;block text-sm&quot;>
    <span class=&quot;text-gray-700 dark:text-gray-400&quot;>Select Option</span>
    <select class=&quot;block w-full mt-1 text-sm dark:text-gray-300 dark:border-gray-600 dark:bg-gray-700 form-select&quot;>
        <option>Option 1</option>
        <option>Option 2</option>
    </select>
</label>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- BUTTONS SECTION -->
        <section id="buttons" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('cursor-click', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Buttons
                </h2>

                <!-- Primary Button -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Primary Button</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3 space-x-2">
                        <button class="px-4 py-2 text-sm font-medium text-white bg-purple-600 rounded-lg hover:bg-purple-700">
                            Primary Button
                        </button>
                        <button class="px-4 py-2 text-sm font-medium text-white bg-purple-600 rounded-lg hover:bg-purple-700 disabled:opacity-50" disabled>
                            Disabled
                        </button>
                    </div>
                    <button @click="copyCode(`<button class=&quot;px-4 py-2 text-sm font-medium text-white bg-purple-600 rounded-lg hover:bg-purple-700&quot;>
    Primary Button
</button>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Secondary Button -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Secondary Button</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3 space-x-2">
                        <button class="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 dark:text-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:hover:bg-gray-600">
                            Secondary Button
                        </button>
                    </div>
                    <button @click="copyCode(`<button class=&quot;px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 dark:text-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:hover:bg-gray-600&quot;>
    Secondary Button
</button>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Danger Button -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Danger Button</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3 space-x-2">
                        <button class="px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-lg hover:bg-red-700">
                            Delete
                        </button>
                    </div>
                    <button @click="copyCode(`<button class=&quot;px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-lg hover:bg-red-700&quot;>
    Delete
</button>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- CARDS SECTION -->
        <section id="cards" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('collection', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Cards
                </h2>

                <!-- Basic Card -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Basic Card</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-4">
                            <h4 class="text-lg font-semibold text-gray-800 dark:text-gray-200 mb-2">Card Title</h4>
                            <p class="text-sm text-gray-600 dark:text-gray-400">
                                This is a basic card component with a title and description.
                            </p>
                        </div>
                    </div>
                    <button @click="copyCode(`<div class=&quot;bg-white dark:bg-gray-800 rounded-lg shadow-md p-4&quot;>
    <h4 class=&quot;text-lg font-semibold text-gray-800 dark:text-gray-200 mb-2&quot;>Card Title</h4>
    <p class=&quot;text-sm text-gray-600 dark:text-gray-400&quot;>Card description</p>
</div>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- BADGES SECTION -->
        <section id="badges" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('tag', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Badges
                </h2>

                <!-- Status Badges -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Status Badges</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3 flex flex-wrap gap-2">
                        <span class="px-2 py-1 text-xs font-semibold text-green-800 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100">
                            Active
                        </span>
                        <span class="px-2 py-1 text-xs font-semibold text-yellow-800 bg-yellow-100 rounded-full dark:bg-yellow-700 dark:text-yellow-100">
                            Pending
                        </span>
                        <span class="px-2 py-1 text-xs font-semibold text-red-800 bg-red-100 rounded-full dark:bg-red-700 dark:text-red-100">
                            Inactive
                        </span>
                        <span class="px-2 py-1 text-xs font-semibold text-blue-800 bg-blue-100 rounded-full dark:bg-blue-700 dark:text-blue-100">
                            Info
                        </span>
                    </div>
                    <button @click="copyCode(`<span class=&quot;px-2 py-1 text-xs font-semibold text-green-800 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100&quot;>
    Active
</span>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- TABLES SECTION -->
        <section id="tables" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('table', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Tables
                </h2>

                <!-- Basic Table -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Basic Table</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3 overflow-x-auto">
                        <table class="w-full whitespace-no-wrap">
                            <thead>
                                <tr class="text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800">
                                    <th class="px-4 py-3">Name</th>
                                    <th class="px-4 py-3">Email</th>
                                    <th class="px-4 py-3">Status</th>
                                </tr>
                            </thead>
                            <tbody class="bg-white divide-y dark:divide-gray-700 dark:bg-gray-800">
                                <tr class="text-gray-700 dark:text-gray-400">
                                    <td class="px-4 py-3">John Doe</td>
                                    <td class="px-4 py-3 text-sm">john@example.com</td>
                                    <td class="px-4 py-3 text-xs">
                                        <span class="px-2 py-1 font-semibold text-green-800 bg-green-100 rounded-full dark:bg-green-700 dark:text-green-100">
                                            Active
                                        </span>
                                    </td>
                                </tr>
                                <tr class="text-gray-700 dark:text-gray-400">
                                    <td class="px-4 py-3">Jane Smith</td>
                                    <td class="px-4 py-3 text-sm">jane@example.com</td>
                                    <td class="px-4 py-3 text-xs">
                                        <span class="px-2 py-1 font-semibold text-yellow-800 bg-yellow-100 rounded-full dark:bg-yellow-700 dark:text-yellow-100">
                                            Pending
                                        </span>
                                    </td>
                                </tr>
                            </tbody>
                        </table>
                    </div>
                    <button @click="copyCode(`<table class=&quot;w-full whitespace-no-wrap&quot;>
    <thead>
        <tr class=&quot;text-xs font-semibold tracking-wide text-left text-gray-500 uppercase border-b dark:border-gray-700 bg-gray-50 dark:text-gray-400 dark:bg-gray-800&quot;>
            <th class=&quot;px-4 py-3&quot;>Name</th>
            <th class=&quot;px-4 py-3&quot;>Email</th>
        </tr>
    </thead>
    <tbody class=&quot;bg-white divide-y dark:divide-gray-700 dark:bg-gray-800&quot;>
        <tr class=&quot;text-gray-700 dark:text-gray-400&quot;>
            <td class=&quot;px-4 py-3&quot;>John Doe</td>
            <td class=&quot;px-4 py-3&quot;>john@example.com</td>
        </tr>
    </tbody>
</table>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- MODALS SECTION -->
        <section id="modals" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('view-grid-add', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Modals
                </h2>

                <!-- Confirmation Modal -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Confirmation Modal</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <button
                            @click="showExampleModal = true"
                            class="px-4 py-2 text-sm font-medium text-white bg-purple-600 rounded-lg hover:bg-purple-700">
                            Open Modal
                        </button>

                        <!-- Example Modal -->
                        <div
                            x-show="showExampleModal"
                            x-cloak
                            class="fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50"
                            @click.self="showExampleModal = false">

                            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-xl p-6 m-4 max-w-md w-full">
                                <div class="flex items-start justify-between mb-4">
                                    <h3 class="text-lg font-semibold text-gray-800 dark:text-gray-200">
                                        Confirm Action
                                    </h3>
                                    <button
                                        @click="showExampleModal = false"
                                        class="text-gray-400 hover:text-gray-600 dark:hover:text-gray-300">
                                        <span x-html="$icon('x', 'w-5 h-5')"></span>
                                    </button>
                                </div>

                                <p class="mb-6 text-sm text-gray-600 dark:text-gray-400">
                                    Are you sure you want to perform this action? This cannot be undone.
                                </p>

                                <div class="flex justify-end gap-3">
                                    <button
                                        @click="showExampleModal = false"
                                        class="px-4 py-2 text-sm font-medium text-gray-700 bg-white border border-gray-300 rounded-lg hover:bg-gray-50 dark:text-gray-300 dark:bg-gray-700 dark:border-gray-600 dark:hover:bg-gray-600">
                                        Cancel
                                    </button>
                                    <button
                                        @click="showExampleModal = false"
                                        class="px-4 py-2 text-sm font-medium text-white bg-purple-600 rounded-lg hover:bg-purple-700">
                                        Confirm
                                    </button>
                                </div>
                            </div>
                        </div>
                    </div>
                    <button @click="copyCode(`<!-- Modal Trigger -->
<button @click=&quot;showModal = true&quot;>Open Modal</button>

<!-- Modal -->
<div x-show=&quot;showModal&quot;
     class=&quot;fixed inset-0 z-50 flex items-center justify-center bg-black bg-opacity-50&quot;
     @click.self=&quot;showModal = false&quot;>
    <div class=&quot;bg-white dark:bg-gray-800 rounded-lg shadow-xl p-6 m-4 max-w-md w-full&quot;>
        <div class=&quot;flex items-start justify-between mb-4&quot;>
            <h3 class=&quot;text-lg font-semibold text-gray-800 dark:text-gray-200&quot;>Title</h3>
            <button @click=&quot;showModal = false&quot;>
                <span x-html=&quot;$icon('x', 'w-5 h-5')&quot;></span>
            </button>
        </div>
        <p class=&quot;mb-6 text-sm text-gray-600 dark:text-gray-400&quot;>Content</p>
        <div class=&quot;flex justify-end gap-3&quot;>
            <button @click=&quot;showModal = false&quot;>Cancel</button>
            <button @click=&quot;showModal = false&quot;>Confirm</button>
        </div>
    </div>
</div>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- ALERTS SECTION -->
        <section id="alerts" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('exclamation', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Alerts
                </h2>

                <!-- Toast Notifications -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Toast Notifications</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3 space-x-2">
                        <button
                            @click="showToastExample('success')"
                            class="px-4 py-2 text-sm font-medium text-white bg-green-600 rounded-lg hover:bg-green-700">
                            Show Success
                        </button>
                        <button
                            @click="showToastExample('error')"
                            class="px-4 py-2 text-sm font-medium text-white bg-red-600 rounded-lg hover:bg-red-700">
                            Show Error
                        </button>
                        <button
                            @click="showToastExample('warning')"
                            class="px-4 py-2 text-sm font-medium text-white bg-yellow-600 rounded-lg hover:bg-yellow-700">
                            Show Warning
                        </button>
                        <button
                            @click="showToastExample('info')"
                            class="px-4 py-2 text-sm font-medium text-white bg-blue-600 rounded-lg hover:bg-blue-700">
                            Show Info
                        </button>
                    </div>
                    <button @click="copyCode(`Utils.showToast('Message here', 'success'); // or 'error', 'warning', 'info'`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

        <!-- CHARTS SECTION - NEW -->
        <section id="charts" class="scroll-mt-24">
            <div class="bg-white dark:bg-gray-800 rounded-lg shadow-md p-6">
                <h2 class="text-2xl font-bold text-gray-800 dark:text-gray-200 mb-6 flex items-center">
                    <span x-html="$icon('chart-pie', 'w-6 h-6 mr-2 text-purple-600 dark:text-purple-400')"></span>
                    Charts
                </h2>

                <p class="mb-6 text-gray-600 dark:text-gray-400">
                    Charts are provided by
                    <a href="https://www.chartjs.org/" target="_blank" class="text-purple-600 dark:text-purple-400 hover:underline">
                        Chart.js
                    </a>. Note that default legends are disabled and you should provide descriptions for your charts in HTML.
                </p>

                <!-- Pie/Doughnut Chart -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Doughnut/Pie Chart</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <div class="bg-white dark:bg-gray-800 rounded-lg p-4">
                            <canvas id="examplePieChart"></canvas>
                            <div class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400">
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-teal-500 rounded-full"></span>
                                    <span>Shoes</span>
                                </div>
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full"></span>
                                    <span>Shirts</span>
                                </div>
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-blue-600 rounded-full"></span>
                                    <span>Bags</span>
                                </div>
                            </div>
                        </div>
                    </div>
                    <button @click="copyCode(`<canvas id=&quot;pieChart&quot;></canvas>
<script>
const pieConfig = {
    type: 'doughnut',
    data: {
        datasets: [{
            data: [33, 33, 33],
            backgroundColor: ['#0694a2', '#7e3af2', '#1c64f2'],
        }],
        labels: ['Shoes', 'Shirts', 'Bags'],
    },
    options: {
        responsive: true,
        cutoutPercentage: 80,
        legend: { display: false },
    },
};
new Chart(document.getElementById('pieChart'), pieConfig);
</script>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Line Chart -->
                <div class="mb-8">
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Line Chart</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <div class="bg-white dark:bg-gray-800 rounded-lg p-4">
                            <canvas id="exampleLineChart"></canvas>
                            <div class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400">
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-teal-500 rounded-full"></span>
                                    <span>Organic</span>
                                </div>
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full"></span>
                                    <span>Paid</span>
                                </div>
                            </div>
                        </div>
                    </div>
                    <button @click="copyCode(`<canvas id=&quot;lineChart&quot;></canvas>
<script>
const lineConfig = {
    type: 'line',
    data: {
        labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
        datasets: [{
            label: 'Organic',
            backgroundColor: '#0694a2',
            borderColor: '#0694a2',
            data: [43, 48, 40, 54, 67, 73, 70],
            fill: false,
        }, {
            label: 'Paid',
            fill: false,
            backgroundColor: '#7e3af2',
            borderColor: '#7e3af2',
            data: [24, 50, 64, 74, 52, 51, 65],
        }],
    },
    options: {
        responsive: true,
        legend: { display: false },
    },
};
new Chart(document.getElementById('lineChart'), lineConfig);
</script>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>

                <!-- Bar Chart -->
                <div>
                    <h3 class="text-lg font-semibold text-gray-700 dark:text-gray-300 mb-3">Bar Chart</h3>
                    <div class="bg-gray-50 dark:bg-gray-900 rounded-lg p-4 mb-3">
                        <div class="bg-white dark:bg-gray-800 rounded-lg p-4">
                            <canvas id="exampleBarChart"></canvas>
                            <div class="flex justify-center mt-4 space-x-3 text-sm text-gray-600 dark:text-gray-400">
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-teal-500 rounded-full"></span>
                                    <span>Shoes</span>
                                </div>
                                <div class="flex items-center">
                                    <span class="inline-block w-3 h-3 mr-1 bg-purple-600 rounded-full"></span>
                                    <span>Bags</span>
                                </div>
                            </div>
                        </div>
                    </div>
                    <button @click="copyCode(`<canvas id=&quot;barChart&quot;></canvas>
<script>
const barConfig = {
    type: 'bar',
    data: {
        labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul'],
        datasets: [{
            label: 'Shoes',
            backgroundColor: '#0694a2',
            data: [43, 48, 40, 54, 67, 73, 70],
        }, {
            label: 'Bags',
            backgroundColor: '#7e3af2',
            data: [24, 50, 64, 74, 52, 51, 65],
        }],
    },
    options: {
        responsive: true,
        legend: { display: false },
    },
};
new Chart(document.getElementById('barChart'), barConfig);
</script>`)" class="text-sm text-purple-600 hover:text-purple-700 dark:text-purple-400 flex items-center">
                        <span x-html="$icon('duplicate', 'w-4 h-4 mr-1')"></span>
                        Copy Code
                    </button>
                </div>
            </div>
        </section>

    </div>
</div>
{% endblock %}

{% block extra_scripts %}
{# ✅ CRITICAL: Load JavaScript file #}
<script src="{{ url_for('static', path='admin/js/components.js') }}"></script>
{% endblock %}