document-types.njk 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. ---
  2. layout: base.njk
  3. title: Document Types
  4. ---
  5. <h1>Document Types</h1>
  6. <p class="subtitle">{{ indices.documentTypes.length }} document types</p>
  7. <div class="search-box">
  8. <input type="text" id="search" placeholder="Search document types...">
  9. </div>
  10. <div id="results">
  11. {% for type in indices.documentTypes %}
  12. <details class="entity-item" data-name="{{ type.name }}" id="{{ type.name | slugify }}">
  13. <summary class="entity-summary">
  14. <span class="entity-name">{{ type.name }}</span>
  15. <span class="entity-count">{{ type.count }} {{ "document" if type.count == 1 else "documents" }}</span>
  16. </summary>
  17. <div class="entity-content">
  18. {% for doc in type.docs %}
  19. <div class="document-card-compact">
  20. <a href="/document/{{ doc.unique_id | slugify }}/" class="doc-link">
  21. <strong>Document {{ doc.document_number }}</strong>
  22. </a>
  23. <div class="meta-compact">
  24. {% if doc.document_metadata.date %}{{ doc.document_metadata.date }} · {% endif %}
  25. {{ doc.page_count }} {{ "page" if doc.page_count == 1 else "pages" }}
  26. </div>
  27. </div>
  28. {% endfor %}
  29. </div>
  30. </details>
  31. {% endfor %}
  32. </div>
  33. <script>
  34. const search = document.getElementById('search');
  35. const results = document.getElementById('results');
  36. const allItems = results.querySelectorAll('.entity-item');
  37. search.addEventListener('input', (e) => {
  38. const query = e.target.value.toLowerCase();
  39. allItems.forEach(item => {
  40. const name = item.dataset.name.toLowerCase();
  41. item.style.display = name.includes(query) ? 'block' : 'none';
  42. });
  43. });
  44. </script>