jekyll-theme-zer0 1.8.2 → 1.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +33 -3
  3. data/README.md +98 -7
  4. data/_data/content_statistics.yml +253 -251
  5. data/_includes/components/nav-export.html +61 -0
  6. data/_includes/components/nav-overview.html +54 -0
  7. data/scripts/bin/install +52 -705
  8. data/scripts/github-setup.sh +0 -0
  9. data/scripts/install/README.md +162 -0
  10. data/scripts/install/ai/client.sh +164 -0
  11. data/scripts/install/ai/diagnose.sh +81 -0
  12. data/scripts/install/ai/prompts/diagnose.system.md +42 -0
  13. data/scripts/install/ai/prompts/spec.schema.json +129 -0
  14. data/scripts/install/ai/prompts/suggest.system.md +43 -0
  15. data/scripts/install/ai/prompts/wizard.system.md +142 -0
  16. data/scripts/install/ai/suggest.sh +57 -0
  17. data/scripts/install/ai/wizard.sh +150 -0
  18. data/scripts/install/apply.sh +156 -0
  19. data/scripts/install/cli.sh +561 -0
  20. data/scripts/install/diff.sh +128 -0
  21. data/scripts/install/doctor.sh +168 -0
  22. data/scripts/install/fs.sh +138 -0
  23. data/scripts/install/log.sh +119 -0
  24. data/scripts/install/plan.sh +299 -0
  25. data/scripts/install/platform.sh +122 -0
  26. data/scripts/install/prompt.sh +124 -0
  27. data/scripts/install/repair.sh +45 -0
  28. data/scripts/install/scrape.sh +535 -0
  29. data/scripts/install/scrape_html.py +764 -0
  30. data/scripts/install/spec.sh +486 -0
  31. data/scripts/install/tasks/_registry.sh +65 -0
  32. data/scripts/install/tasks/agents.sh +60 -0
  33. data/scripts/install/tasks/config.sh +37 -0
  34. data/scripts/install/tasks/data.sh +18 -0
  35. data/scripts/install/tasks/deploy_azure-swa.sh +17 -0
  36. data/scripts/install/tasks/deploy_docker-prod.sh +21 -0
  37. data/scripts/install/tasks/deploy_github-pages.sh +18 -0
  38. data/scripts/install/tasks/devcontainer.sh +26 -0
  39. data/scripts/install/tasks/docker.sh +29 -0
  40. data/scripts/install/tasks/gemfile.sh +42 -0
  41. data/scripts/install/tasks/gitignore.sh +26 -0
  42. data/scripts/install/tasks/marker.sh +46 -0
  43. data/scripts/install/tasks/nav.sh +18 -0
  44. data/scripts/install/tasks/pages.sh +61 -0
  45. data/scripts/install/tasks/readme.sh +27 -0
  46. data/scripts/install/tasks/scrape.sh +348 -0
  47. data/scripts/install/template.sh +138 -0
  48. data/scripts/install/tui.sh +110 -0
  49. data/scripts/install/upgrade.sh +49 -0
  50. data/scripts/lib/install/template.sh +1 -0
  51. metadata +49 -6
@@ -0,0 +1,61 @@
1
+ <!--
2
+ ===================================================================
3
+ NAV EXPORT — Export navigation data as YAML
4
+ ===================================================================
5
+
6
+ File: nav-export.html
7
+ Path: _includes/components/nav-export.html
8
+ Purpose: Renders the current navigation data files as copyable YAML
9
+ so users can download or inspect the raw navigation config.
10
+
11
+ Dependencies: Bootstrap 5, Bootstrap Icons,
12
+ _data/navigation/*.yml
13
+ Used by: pages/_about/settings/navigation.md
14
+ ===================================================================
15
+ -->
16
+
17
+ {% assign nav_files = "main,home,about,docs,posts,quickstart,admin" | split: "," %}
18
+
19
+ <div class="mb-3 d-flex align-items-center gap-2">
20
+ <label class="form-label mb-0 fw-semibold" for="exportNavSelect">Navigation file:</label>
21
+ <select class="form-select form-select-sm w-auto" id="exportNavSelect" onchange="showNavExport(this.value)">
22
+ {% for nav_name in nav_files %}
23
+ <option value="{{ nav_name }}">{{ nav_name }}</option>
24
+ {% endfor %}
25
+ </select>
26
+ <button class="btn btn-sm btn-outline-secondary" onclick="copyNavExport()" title="Copy to clipboard">
27
+ <i class="bi bi-clipboard me-1"></i>Copy
28
+ </button>
29
+ </div>
30
+
31
+ {% for nav_name in nav_files %}
32
+ {% assign nav_data = site.data.navigation[nav_name] %}
33
+ <div class="nav-export-block" id="export-{{ nav_name }}" {% unless forloop.first %}style="display:none"{% endunless %}>
34
+ <pre class="bg-body-secondary rounded p-3 small overflow-auto" style="max-height:400px" id="export-pre-{{ nav_name }}">{% if nav_data %}{% for item in nav_data %}- title: "{{ item.title | default: item.name }}"
35
+ url: "{{ item.url }}"{% if item.children %}
36
+ children:{% for child in item.children %}
37
+ - title: "{{ child.title | default: child.name }}"
38
+ url: "{{ child.url }}"{% endfor %}{% endif %}
39
+ {% endfor %}{% else %}# No navigation data found for {{ nav_name }}{% endif %}</pre>
40
+ </div>
41
+ {% endfor %}
42
+
43
+ <script>
44
+ function showNavExport(name) {
45
+ document.querySelectorAll('.nav-export-block').forEach(function(el) {
46
+ el.style.display = 'none';
47
+ });
48
+ var target = document.getElementById('export-' + name);
49
+ if (target) target.style.display = '';
50
+ }
51
+ function copyNavExport() {
52
+ var visible = document.querySelector('.nav-export-block:not([style*="display:none"])');
53
+ if (!visible) return;
54
+ var pre = visible.querySelector('pre');
55
+ if (!pre) return;
56
+ navigator.clipboard.writeText(pre.innerText).then(function() {
57
+ var btn = document.querySelector('[onclick="copyNavExport()"]');
58
+ if (btn) { btn.innerHTML = '<i class="bi bi-check2 me-1"></i>Copied!'; setTimeout(function(){ btn.innerHTML = '<i class="bi bi-clipboard me-1"></i>Copy'; }, 2000); }
59
+ });
60
+ }
61
+ </script>
@@ -0,0 +1,54 @@
1
+ <!--
2
+ ===================================================================
3
+ NAV OVERVIEW — Navigation structure summary
4
+ ===================================================================
5
+
6
+ File: nav-overview.html
7
+ Path: _includes/components/nav-overview.html
8
+ Purpose: Displays a high-level overview of all navigation menus,
9
+ their item counts, and quick links to edit them.
10
+
11
+ Dependencies: Bootstrap 5, Bootstrap Icons,
12
+ _data/navigation/*.yml
13
+ Used by: pages/_about/settings/navigation.md
14
+ ===================================================================
15
+ -->
16
+
17
+ {% assign nav_files = "main,home,about,docs,posts,quickstart,admin" | split: "," %}
18
+
19
+ <div class="row g-3 mb-4">
20
+ {% for nav_name in nav_files %}
21
+ {% assign nav_data = site.data.navigation[nav_name] %}
22
+ <div class="col-sm-6 col-lg-4">
23
+ <div class="card h-100">
24
+ <div class="card-body">
25
+ <div class="d-flex align-items-center mb-2">
26
+ <i class="bi bi-signpost-2 me-2 text-primary"></i>
27
+ <h6 class="card-title mb-0 text-capitalize">{{ nav_name }}</h6>
28
+ </div>
29
+ {% if nav_data %}
30
+ <p class="text-body-secondary small mb-1">
31
+ {{ nav_data | size }} top-level item{% if nav_data.size != 1 %}s{% endif %}
32
+ </p>
33
+ <ul class="list-unstyled small mb-0">
34
+ {% for item in nav_data limit:5 %}
35
+ <li class="text-truncate">
36
+ <i class="bi bi-chevron-right me-1 text-muted" style="font-size:0.7rem"></i>
37
+ {{ item.title | default: item.name | default: "(untitled)" }}
38
+ </li>
39
+ {% endfor %}
40
+ {% if nav_data.size > 5 %}
41
+ <li class="text-muted">… and {{ nav_data.size | minus: 5 }} more</li>
42
+ {% endif %}
43
+ </ul>
44
+ {% else %}
45
+ <p class="text-body-secondary small mb-0"><em>No data found</em></p>
46
+ {% endif %}
47
+ </div>
48
+ <div class="card-footer bg-transparent border-0 pt-0">
49
+ <small class="text-body-secondary">_data/navigation/{{ nav_name }}.yml</small>
50
+ </div>
51
+ </div>
52
+ </div>
53
+ {% endfor %}
54
+ </div>