---
import StarlightPage from '@astrojs/starlight/components/StarlightPage.astro';
import toolsData from '../../public/data/tools.json';
import Modal from '../components/Modal.astro';
import ContributeCTA from "../components/ContributeCTA.astro";
import EmbeddedPageData from "../components/EmbeddedPageData.astro";
import PageHeader from "../components/PageHeader.astro";
import BackToTop from '../components/BackToTop.astro';
import { renderToolsHtml, sortTools } from "../scripts/pages/tools-render";

const initialItems = sortTools(
  toolsData.items.map((item) => ({
    ...item,
    title: item.name,
  })),
  "title"
);
---

<StarlightPage frontmatter={{ title: 'Tools', description: 'MCP servers and developer tools for GitHub Copilot', template: 'splash', prev: false, next: false, editUrl: false }}>
  <div id="main-content">
    <PageHeader title="Tools" description="MCP servers and developer tools for GitHub Copilot" icon="wrench" />

    <div class="page-content">
      <div class="container">
        <div class="listing-toolbar">
          <div class="listing-toolbar-row">
            <div id="results-count" class="results-count" aria-live="polite">{initialItems.length} tools</div>
            <details class="listing-controls">
              <summary class="listing-controls-trigger btn btn-secondary btn-small">Sort &amp; Filter</summary>
              <div class="listing-controls-panel">
                <div class="filters-bar" id="filters-bar">
                  <div class="filter-group">
                    <label for="filter-category">Category:</label>
                    <select id="filter-category" class="filter-select" aria-label="Filter by category">
                      <option value="">All Categories</option>
                      {toolsData.filters.categories.map((category) => (
                        <option value={category}>{category}</option>
                      ))}
                    </select>
                  </div>
                  <div class="filter-group">
                    <label for="sort-select">Sort:</label>
                    <select id="sort-select" class="filter-select" aria-label="Sort tools">
                      <option value="featured">Featured First</option>
                      <option value="title">Title</option>
                    </select>
                  </div>
                  <button id="clear-filters" class="btn btn-secondary btn-small">Clear</button>
                </div>
              </div>
            </details>
          </div>
        </div>

        <div id="tools-list" role="list" set:html={renderToolsHtml(initialItems)}></div>

        <div class="coming-soon">
          <h2>More Tools Coming Soon</h2>
          <p>
            We're working on additional tools to enhance your GitHub Copilot
            experience. Check back soon!
          </p>
        </div>
        <ContributeCTA resourceType="tools" />
      </div>
    </div>
  </div>

  <Modal />
  <BackToTop />
  <EmbeddedPageData filename="tools.json" data={toolsData} />

  <style is:global>
    .empty-state {
      text-align: center;
      padding: 48px;
      background-color: var(--color-bg-secondary);
      border-radius: var(--border-radius-lg);
    }

    .empty-state h3 {
      color: var(--color-text-muted);
      margin-bottom: 8px;
    }

    .empty-state p {
      color: var(--color-text-muted);
    }

    .tool-card {
      background-color: var(--color-card-bg);
      border: 1px solid var(--color-border);
      border-radius: var(--border-radius-lg);
      padding: 32px;
      margin-bottom: 24px;
    }

    .tool-header {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-bottom: 16px;
      flex-wrap: wrap;
    }

    .tool-header h2 {
      margin: 0;
      font-size: 24px;
      color: var(--color-text-emphasis);
    }

    .tool-badges {
      display: flex;
      gap: 8px;
      flex-wrap: wrap;
    }

    .tool-badge {
      padding: 4px 12px;
      border-radius: 4px;
      font-size: 12px;
      font-weight: 500;
    }

    .tool-badge.featured {
      background-color: var(--color-primary);
      color: white;
    }

    .tool-badge.category {
      background-color: var(--color-purple-light);
      color: var(--color-purple-dark);
    }

    .tool-description {
      color: var(--color-text-secondary);
      font-size: 16px;
      line-height: 1.6;
      margin-bottom: 24px;
    }

    .tool-section {
      margin-top: 24px;
    }

    .tool-section h3 {
      margin-bottom: 12px;
      font-size: 16px;
      font-weight: 600;
      color: var(--color-text-emphasis);
    }

    .tool-section ul {
      margin: 0;
      padding-left: 24px;
      color: var(--color-text-muted);
    }

    .tool-section li {
      margin-bottom: 8px;
    }

    .tool-tags {
      display: flex;
      flex-wrap: wrap;
      gap: 8px;
      margin-top: 20px;
    }

    .tool-tag {
      background-color: var(--color-bg-secondary);
      color: var(--color-text-muted);
      padding: 4px 12px;
      border-radius: 16px;
      font-size: 12px;
      border: 1px solid var(--color-border);
    }

    .tool-config {
      margin-top: 24px;
    }

    .tool-config h3 {
      margin-bottom: 12px;
      font-size: 16px;
      font-weight: 600;
      color: var(--color-text-emphasis);
    }

    .tool-config-wrapper {
      position: relative;
    }

    .tool-config pre {
      background-color: var(--color-bg-secondary);
      border: 1px solid var(--color-border);
      border-radius: var(--border-radius);
      padding: 16px;
      overflow-x: auto;
      margin: 0;
    }

    .tool-config code {
      font-family: var(--font-mono);
      font-size: 13px;
      color: var(--color-text-primary);
      white-space: pre;
    }

    .tool-actions {
      margin-top: 24px;
      padding-top: 24px;
      border-top: 1px solid var(--color-border);
      display: flex;
      flex-wrap: wrap;
      gap: 12px;
    }

    .coming-soon {
      text-align: center;
      padding: 48px;
      background-color: var(--color-bg-secondary);
      border: 1px dashed var(--color-border);
      border-radius: var(--border-radius-lg);
    }

    .coming-soon h2 {
      color: var(--color-text-muted);
      margin-bottom: 8px;
    }

    .coming-soon p {
      color: var(--color-text-muted);
    }

    .copy-config-btn {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 8px 14px;
      font-size: 13px;
      background-color: var(--color-bg-primary);
      border: 1px solid var(--color-border);
      border-radius: var(--border-radius);
      color: var(--color-text-secondary);
      cursor: pointer;
      margin-top: 12px;
      transition: all 0.2s;
    }

    .copy-config-btn:hover {
      background-color: var(--color-bg-secondary);
      color: var(--color-text-primary);
      border-color: var(--color-text-muted);
    }

    .copy-config-btn.copied {
      background-color: var(--color-success);
      color: white;
      border-color: var(--color-success);
    }

    /* Search highlight */
    .search-highlight {
      background-color: var(--color-warning);
      color: var(--color-text-emphasis);
      padding: 0 2px;
      border-radius: 2px;
    }
  </style>

  <script>
    import '../scripts/listing-flyouts';
    import '../scripts/pages/tools';
  </script>
</StarlightPage>
