summaryrefslogtreecommitdiff
path: root/internal/generator/templates/shared/nav.tmpl
blob: 975976126eb7e755ea611892406590246561c9b8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108

{{define "splashGate"}}
<script>
(function(){
  try {
    var sp = new URLSearchParams(location.search);
    if (sp.get('splash') === '0') {
      document.documentElement.classList.add('sno-splash-skip');
      return;
    }
  } catch (_) {}
  try {
    if (/^#post-/.test(location.hash)) {
      document.documentElement.classList.add('sno-splash-skip');
      return;
    }
  } catch (_) {}
  function isIndexLikePath(pathname) {
    var p = pathname || '/';
    if (p === '' || p === '/') return true;
    var parts = p.split('/').filter(function(s) { return s.length; });
    if (parts.length === 0) return true;
    var last = parts[parts.length - 1].toLowerCase();
    if (last === 'index.html' || last === 'index.htm') return true;
    if (p.endsWith('/') && parts.length === 1) return true;
    return false;
  }
  var onIndex = isIndexLikePath(location.pathname);
  var ref = document.referrer;
  function refIsSameSiteBlogPage(url) {
    if (!url) return false;
    try {
      var ru = new URL(url), cu = new URL(location.href);
      if (ru.origin !== cu.origin) return false;
      if (isIndexLikePath(ru.pathname)) return true;
      var rp = ru.pathname.split('/').filter(function(s) { return s.length; });
      var rs = (rp.length ? rp[rp.length - 1] : '').toLowerCase();
      return /^page\d+\.html$/.test(rs);
    } catch (_) { return false; }
  }
  if (!onIndex || refIsSameSiteBlogPage(ref)) document.documentElement.classList.add('sno-splash-skip');
})();
</script>
{{end}}

{{define "navhints"}}
<div class="nav-hints" role="region" aria-label="Controls and shortcuts">
    <div class="nav-hints-row nav-hints-nav">
        <span class="nav-hints-label">nav</span>
        <button type="button" class="nav-fx-button sno-nav-btn" data-sno-nav="prev-post" aria-label="Previous post">
            <i class="fas fa-arrow-up" aria-hidden="true"></i><kbd>j</kbd><kbd>↑</kbd><span class="sno-btn-text">post</span>
        </button>
        <button type="button" class="nav-fx-button sno-nav-btn" data-sno-nav="next-post" aria-label="Next post">
            <i class="fas fa-arrow-down" aria-hidden="true"></i><kbd>k</kbd><kbd>↓</kbd><span class="sno-btn-text">post</span>
        </button>
        <button type="button" class="nav-fx-button sno-nav-btn" data-sno-nav="prev-page" aria-label="Previous page">
            <i class="fas fa-arrow-left" aria-hidden="true"></i><kbd>h</kbd><kbd>←</kbd><span class="sno-btn-text">page</span>
        </button>
        <button type="button" class="nav-fx-button sno-nav-btn" data-sno-nav="next-page" aria-label="Next page">
            <i class="fas fa-arrow-right" aria-hidden="true"></i><kbd>l</kbd><kbd>→</kbd><span class="sno-btn-text">page</span>
        </button>
        <button type="button" class="nav-fx-button sno-nav-btn" data-sno-nav="open" aria-label="Open selected post">
            <i class="fas fa-expand" aria-hidden="true"></i><kbd>Enter</kbd><span class="sno-btn-text">open</span>
        </button>
        <button type="button" class="nav-fx-button sno-nav-btn" data-sno-nav="close" aria-label="Close modal">
            <i class="fas fa-compress" aria-hidden="true"></i><kbd>Esc</kbd><span class="sno-btn-text">close</span>
        </button>
    </div>
    <div class="nav-hints-row nav-hints-fx">
        <span class="nav-hints-label">fx</span>
        <button type="button" class="nav-fx-button" data-sno-fx="wild" aria-pressed="false" aria-label="Toggle wild mode">
            <i class="fas fa-bolt" aria-hidden="true"></i><kbd>w</kbd><span class="sno-btn-text">wild</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="crt" aria-pressed="false" aria-label="Toggle CRT effect">
            <i class="fas fa-tv" aria-hidden="true"></i><kbd>c</kbd><span class="sno-btn-text">crt</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="ghost" aria-pressed="false" aria-label="Toggle ghost mode">
            <i class="fas fa-ghost" aria-hidden="true"></i><kbd>g</kbd><span class="sno-btn-text">ghost</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="blank" aria-pressed="false" aria-label="Toggle blank mode">
            <i class="fas fa-eye-slash" aria-hidden="true"></i><kbd>b</kbd><span class="sno-btn-text">blank</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="ambient" aria-pressed="false" aria-label="Start or pause ambient music">
            <i class="fas fa-music" aria-hidden="true"></i><kbd>p</kbd><span class="sno-btn-text">music</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="flash" aria-label="Trigger flash effect">
            <i class="fas fa-camera" aria-hidden="true"></i><kbd>f</kbd><span class="sno-btn-text">flash</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="scatter" aria-label="Trigger scatter effect">
            <i class="fas fa-wind" aria-hidden="true"></i><kbd>x</kbd><span class="sno-btn-text">scatter</span>
        </button>
        <button type="button" class="nav-fx-button" data-sno-fx="theme" aria-label="Random theme">
            <i class="fas fa-palette" aria-hidden="true"></i><kbd>t</kbd><span class="sno-btn-text">theme</span>
        </button>
        <select id="sno-theme-select" class="nav-fx-button" aria-label="Theme"></select>
    </div>
</div>
{{end}}

{{define "navmodal"}}
<div class="post-modal" id="post-modal" role="dialog" aria-modal="true" aria-label="Expanded post">
    <div class="modal-inner">
        <button class="modal-close" onclick="closeModal()" aria-label="Close post"><i class="fas fa-times" aria-hidden="true"></i> CLOSE</button>
        <div id="modal-content"></div>
        <div class="sno-scroll-end" id="sno-scroll-end" aria-hidden="true"></div>
    </div>
</div>
{{end}}