spec-up-t 1.1.24 → 1.1.26

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.
@@ -41,54 +41,62 @@ function inPageSearch() {
41
41
 
42
42
 
43
43
  /* Add DOM elements: search container with search bar, back and forth buttons, and results count */
44
-
45
- let searchContainer = document.createElement("div");
46
- searchContainer.setAttribute("id", "container-" + antiNameCollisions);
47
- searchContainer.setAttribute("class", "container-" + antiNameCollisions);
44
+ const searchContainer = document.createElement("div");
45
+ searchContainer.setAttribute("id", `container-${antiNameCollisions}`);
46
+ searchContainer.classList.add("input-group", "mb-3", "d-flex", "align-items-center"); // Bootstrap 5.3 input group with margin bottom
47
+ searchContainer.setAttribute("role", "search"); // ARIA role for search container
48
48
  terminologySectionUtilityContainer.appendChild(searchContainer);
49
49
 
50
50
  // Add an input element (for search)
51
- let searchInput = document.createElement("input");
51
+ const searchInput = document.createElement("input");
52
52
  searchInput.setAttribute("type", "text");
53
53
  searchInput.setAttribute("id", antiNameCollisions);
54
+ searchInput.classList.add("form-control");
54
55
  searchInput.setAttribute("placeholder", searchBarPlaceholder);
56
+ searchInput.setAttribute("aria-label", "Search terms"); // ARIA label for screen readers
57
+ searchInput.setAttribute("autocomplete", "off"); // Prevent browser autocomplete
55
58
  searchContainer.appendChild(searchInput);
56
59
 
57
- // setTimeout(() => {
58
- // searchInput.focus();
59
- // }, 1000);
60
-
61
- // Add a container for the back and forth buttons
62
- const backAndForthButtonsContainer = document.createElement("div");
63
- backAndForthButtonsContainer.setAttribute("id", "back-and-forth-buttons-container-" + antiNameCollisions);
64
-
65
- // Add a back button to the container for the back and forth buttons
66
- const goToPreviousMatchButton = document.createElement('button');
67
- goToPreviousMatchButton.setAttribute("id", "one-match-backward-" + antiNameCollisions);
68
- goToPreviousMatchButton.setAttribute("disabled", "disabled");
69
- goToPreviousMatchButton.setAttribute("title", "Go to previous match. Shortcut key: Left Arrow");
70
- goToPreviousMatchButton.textContent = "▲";
71
- backAndForthButtonsContainer.appendChild(goToPreviousMatchButton);
72
-
73
- // Add a forward button to the container for the back and forth buttons
74
- const goToNextMatchButton = document.createElement('button');
75
- goToNextMatchButton.setAttribute("id", "one-match-forward-" + antiNameCollisions);
76
- goToNextMatchButton.setAttribute("disabled", "disabled");
77
- goToNextMatchButton.setAttribute("title", "Go to next match. Shortcut key: Right Arrow");
78
- goToNextMatchButton.textContent = "▼";
79
- backAndForthButtonsContainer.appendChild(goToNextMatchButton);
80
-
81
- // Add the container for the back and forth buttons
82
- // search.after(backAndForthButtonsContainer);
83
- searchContainer.appendChild(backAndForthButtonsContainer);
84
-
85
- // Add number of matches
60
+ // Add a container for the navigation buttons and results
61
+ const buttonGroup = document.createElement("div");
62
+ buttonGroup.classList.add("input-group-append"); // Bootstrap 5.3 button group styling
63
+
64
+ // Add a back button
65
+ const goToPreviousMatchButton = document.createElement("button");
66
+ goToPreviousMatchButton.setAttribute("id", `one-match-backward-${antiNameCollisions}`);
67
+ goToPreviousMatchButton.classList.add("btn", "btn-outline-secondary");
68
+ goToPreviousMatchButton.setAttribute("type", "button"); // Specify button type
69
+ goToPreviousMatchButton.setAttribute("disabled", "true"); // Bootstrap 5 uses "true" instead of "disabled"
70
+ goToPreviousMatchButton.setAttribute("title", "Go to previous match (Left Arrow)");
71
+ goToPreviousMatchButton.setAttribute("aria-label", "Go to previous match");
72
+ goToPreviousMatchButton.innerHTML = '<span aria-hidden="true">▲</span>'; // Hide symbol from screen readers
73
+ buttonGroup.appendChild(goToPreviousMatchButton);
74
+
75
+ // Add a forward button
76
+ const goToNextMatchButton = document.createElement("button");
77
+ goToNextMatchButton.setAttribute("id", `one-match-forward-${antiNameCollisions}`);
78
+ goToNextMatchButton.classList.add("btn", "btn-outline-secondary");
79
+ goToNextMatchButton.setAttribute("type", "button");
80
+ goToNextMatchButton.setAttribute("disabled", "true");
81
+ goToNextMatchButton.setAttribute("title", "Go to next match (Right Arrow)");
82
+ goToNextMatchButton.setAttribute("aria-label", "Go to next match");
83
+ goToNextMatchButton.innerHTML = '<span aria-hidden="true">▼</span>';
84
+ buttonGroup.appendChild(goToNextMatchButton);
85
+
86
+
87
+ // Add number of matches with accessibility
86
88
  const totalMatchesSpan = document.createElement("span");
87
- totalMatchesSpan.setAttribute("id", "total-matches-" + antiNameCollisions);
89
+ totalMatchesSpan.setAttribute("id", `total-matches-${antiNameCollisions}`);
90
+ totalMatchesSpan.classList.add("input-group-text"); // Bootstrap 5.3 styling
88
91
  totalMatchesSpan.innerHTML = `0 ${matches}`;
89
- // backAndForthButtonsContainer.after(totalMatchesSpan);
92
+ totalMatchesSpan.setAttribute("aria-live", "polite"); // Announce changes to screen readers
93
+ totalMatchesSpan.setAttribute("role", "status"); // Define as status region
90
94
  searchContainer.appendChild(totalMatchesSpan);
91
-
95
+
96
+ // Add the button group to the container
97
+ searchContainer.appendChild(buttonGroup);
98
+
99
+
92
100
  /* END Add DOM elements */
93
101
 
94
102
  // Add an event listener to the input element
@@ -8,7 +8,7 @@
8
8
  function tokenInput() {
9
9
  let buttonTokenInput = document.createElement("button");
10
10
  buttonTokenInput.classList.add("button-token-input");
11
- buttonTokenInput.classList.add("btn");
11
+ buttonTokenInput.classList.add("btn", "btn-sm", "btn-outline-secondary","me-1");
12
12
  buttonTokenInput.innerHTML = "&#128273;";
13
13
  document.querySelector('#repo_issues').insertAdjacentElement('afterend', buttonTokenInput);
14
14
  buttonTokenInput.addEventListener('click', () => {
package/index.js CHANGED
@@ -267,7 +267,7 @@ module.exports = async function (options = {}) {
267
267
  const termsIndex = (spec.markdown_paths || ['spec.md']).indexOf('terms-and-definitions-intro.md');
268
268
  if (termsIndex !== -1) {
269
269
  // Append the HTML string to the content of terms-and-definitions-intro.md. This string is used to create a div that is used to insert an alphabet index, and a div that is used as the starting point of the terminology index. The newlines are essential for the correct rendering of the markdown.
270
- docs[termsIndex] += '\n\n<div id="terminology-section-utility-container"></div>\n\n<div id="terminology-section-start-h7vc6omi2hr2880"></div>\n\n<hr>\n\n';
270
+ docs[termsIndex] += '\n\n<div id="terminology-section-utility-container"></div>\n\n<div id="terminology-section-start-h7vc6omi2hr2880"></div>\n\n';
271
271
  }
272
272
 
273
273
  let doc = docs.join("\n");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "spec-up-t",
3
- "version": "1.1.24",
3
+ "version": "1.1.26",
4
4
  "description": "Technical specification drafting tool that generates rich specification documents from markdown. Forked from https://github.com/decentralized-identity/spec-up by Daniel Buchner (https://github.com/csuwildcat)",
5
5
  "main": "./index",
6
6
  "repository": {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "head": {
3
3
  "css": [
4
- "assets/css/bootstrap-parts.css",
4
+ "assets/css/theme-vars.css",
5
5
  "assets/css/custom-elements.css",
6
6
  "assets/css/prism.css",
7
7
  "assets/css/chart.css",
@@ -15,11 +15,20 @@
15
15
  "assets/css/modal.css",
16
16
  "assets/css/create-alphabet-index.css",
17
17
  "assets/css/pdf-download.css",
18
+ "assets/css/terms-and-definitions.css",
19
+ "assets/css/bootstrap.min.css",
20
+ "assets/css/header-navbar.css",
21
+ "assets/css/sidebar-toc.css",
22
+ "assets/css/loader.css",
23
+ "assets/css/external-links.css",
24
+ "assets/css/repo-issues.css",
25
+ "assets/css/adjust-font-size.css",
18
26
  "assets/css/index.css"
19
27
  ],
20
28
  "js": [
21
29
  "assets/js/utils.js",
22
- "assets/js/custom-elements.js"
30
+ "assets/js/custom-elements.js",
31
+ "assets/js/color-modes.js"
23
32
  ]
24
33
  },
25
34
  "body": {
@@ -49,8 +58,11 @@
49
58
  "assets/js/collapse-definitions.js",
50
59
  "assets/js/collapse-meta-info.js",
51
60
  "assets/js/add-href-to-snapshot-link.js",
61
+ "assets/js/adjust-font-size.js",
62
+ "assets/js/close-off-canvas-menu.js",
52
63
  "assets/js/index.js",
53
- "assets/js/css-helper.js"
64
+ "assets/js/css-helper.js",
65
+ "assets/js/bootstrap.bundle.min.js"
54
66
  ]
55
67
  }
56
68
  }
@@ -134,34 +134,4 @@ module.exports = function (md, templates = {}) {
134
134
 
135
135
  return originalRender(tokens, idx, options, env, self);
136
136
  };
137
-
138
- // Override the default `dd_open` renderer
139
- md.renderer.rules.dd_open = (tokens, idx, options, env, self) => {
140
- // Get the next token (the content inside the <dd>)
141
- const contentToken = tokens[idx + 1];
142
-
143
- if (contentToken.tag === 'p') {
144
- return '<dd>';
145
- }
146
-
147
- if (contentToken.tag === 'table') {
148
- return '<dd class="contains-table">';
149
- }
150
-
151
- // Default behavior
152
- return '';
153
- };
154
-
155
- // Override the default `dd_close` renderer
156
- md.renderer.rules.dd_close = (tokens, idx, options, env, self) => {
157
- // Get the previous token (the content inside the <dd>)
158
- const contentToken = tokens[idx - 1];
159
-
160
- if (contentToken.tag === 'p') {
161
- return '</dd>';
162
- }
163
-
164
- // Default behavior
165
- return '';
166
- };
167
137
  };
@@ -1,80 +1,241 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
1
+ <!doctype html>
2
+ <html lang="en" data-bs-theme="auto">
3
3
 
4
4
  <head>
5
5
  <meta charset="utf-8">
6
- <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
7
- <meta name="generator" content="Spec-Up-T" />
8
- <title>${title}</title>
6
+ <meta name="viewport" content="width=device-width, initial-scale=1">
9
7
  <meta name="description" content="${description}">
10
8
  <meta name="author" content="${author}">
11
9
  <link rel="icon" href="${specFavicon}" type="image/x-icon">
12
- <link href="https://fonts.googleapis.com/css2?family=Heebo:wght@300;400&display=swap" rel="stylesheet">
10
+ <meta name="generator" content="Spec-Up-T" />
11
+ <title>${title}</title>
13
12
 
14
13
  ${assetsHead}
15
14
  ${xtrefsData}
15
+
16
+ <!-- Template based on https://getbootstrap.com/docs/5.3/examples/dashboard/ -->
17
+ <!-- Custom styles for this template -->
18
+ <link href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.10.5/font/bootstrap-icons.min.css" rel="stylesheet">
16
19
  </head>
17
20
 
18
21
  <body features="${features}">
19
-
20
22
  ${assetsSvg}
21
23
 
22
- <main>
23
-
24
- <header id="header" class="panel-header">
25
- <span id="toc_toggle" panel-toggle="toc">
26
- <svg icon>
27
- <use xlink:href="#svg-nested-list"></use>
28
- </svg>
29
- </span>
30
- <a id="logo" href="${specLogoLink}">
31
- <img src="${specLogo}" />
32
- </a>
33
- <span id="repo_issues" issue-count animate panel-toggle="repo_issues">
34
- <svg icon>
35
- <use xlink:href="#svg-github"></use>
36
- </svg>
37
- </span>
38
- </header>
39
-
40
- <article id="content">
41
- ${render}
42
- </article>
43
-
44
- </main>
45
-
46
- <slide-panels id="slidepanels">
47
- <slide-panel id="repo_issues" options="right">
48
- <header class="panel-header">
49
- <span>
50
- <svg icon>
51
- <use xlink:href="#svg-github"></use>
24
+ <!-- Icons for hamburger menu, dark/light buttons -->
25
+ <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
26
+ <symbol id="check2" viewBox="0 0 16 16">
27
+ <path
28
+ d="M13.854 3.646a.5.5 0 0 1 0 .708l-7 7a.5.5 0 0 1-.708 0l-3.5-3.5a.5.5 0 1 1 .708-.708L6.5 10.293l6.646-6.647a.5.5 0 0 1 .708 0z" />
29
+ </symbol>
30
+ <symbol id="circle-half" viewBox="0 0 16 16">
31
+ <path d="M8 15A7 7 0 1 0 8 1v14zm0 1A8 8 0 1 1 8 0a8 8 0 0 1 0 16z" />
32
+ </symbol>
33
+ <symbol id="moon-stars-fill" viewBox="0 0 16 16">
34
+ <path
35
+ d="M6 .278a.768.768 0 0 1 .08.858 7.208 7.208 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277.527 0 1.04-.055 1.533-.16a.787.787 0 0 1 .81.316.733.733 0 0 1-.031.893A8.349 8.349 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.752.752 0 0 1 6 .278z" />
36
+ <path
37
+ d="M10.794 3.148a.217.217 0 0 1 .412 0l.387 1.162c.173.518.579.924 1.097 1.097l1.162.387a.217.217 0 0 1 0 .412l-1.162.387a1.734 1.734 0 0 0-1.097 1.097l-.387 1.162a.217.217 0 0 1-.412 0l-.387-1.162A1.734 1.734 0 0 0 9.31 6.593l-1.162-.387a.217.217 0 0 1 0-.412l1.162-.387a1.734 1.734 0 0 0 1.097-1.097l.387-1.162zM13.863.099a.145.145 0 0 1 .274 0l.258.774c.115.346.386.617.732.732l.774.258a.145.145 0 0 1 0 .274l-.774.258a1.156 1.156 0 0 0-.732.732l-.258.774a.145.145 0 0 1-.274 0l-.258-.774a1.156 1.156 0 0 0-.732-.732l-.774-.258a.145.145 0 0 1 0-.274l.774-.258c.346-.115.617-.386.732-.732L13.863.1z" />
38
+ </symbol>
39
+ <symbol id="sun-fill" viewBox="0 0 16 16">
40
+ <path
41
+ d="M8 12a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0zm0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13zm8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5zM3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8zm10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0zm-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0zm9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707zM4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708z" />
42
+ </symbol>
43
+ </svg>
44
+
45
+ <svg xmlns="http://www.w3.org/2000/svg" class="d-none">
46
+ <symbol id="calendar3" viewBox="0 0 16 16">
47
+ <path
48
+ d="M14 0H2a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2zM1 3.857C1 3.384 1.448 3 2 3h12c.552 0 1 .384 1 .857v10.286c0 .473-.448.857-1 .857H2c-.552 0-1-.384-1-.857V3.857z" />
49
+ <path
50
+ d="M6.5 7a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm-9 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2zm3 0a1 1 0 1 0 0-2 1 1 0 0 0 0 2z" />
51
+ </symbol>
52
+ <symbol id="cart" viewBox="0 0 16 16">
53
+ <path
54
+ d="M0 1.5A.5.5 0 0 1 .5 1H2a.5.5 0 0 1 .485.379L2.89 3H14.5a.5.5 0 0 1 .49.598l-1 5a.5.5 0 0 1-.465.401l-9.397.472L4.415 11H13a.5.5 0 0 1 0 1H4a.5.5 0 0 1-.491-.408L2.01 3.607 1.61 2H.5a.5.5 0 0 1-.5-.5zM3.102 4l.84 4.479 9.144-.459L13.89 4H3.102zM5 12a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm7 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm-7 1a1 1 0 1 1 0 2 1 1 0 0 1 0-2zm7 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2z" />
55
+ </symbol>
56
+ <symbol id="chevron-right" viewBox="0 0 16 16">
57
+ <path fill-rule="evenodd"
58
+ d="M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z" />
59
+ </symbol>
60
+ <symbol id="door-closed" viewBox="0 0 16 16">
61
+ <path d="M3 2a1 1 0 0 1 1-1h8a1 1 0 0 1 1 1v13h1.5a.5.5 0 0 1 0 1h-13a.5.5 0 0 1 0-1H3V2zm1 13h8V2H4v13z" />
62
+ <path d="M9 9a1 1 0 1 0 2 0 1 1 0 0 0-2 0z" />
63
+ </symbol>
64
+ <symbol id="file-earmark" viewBox="0 0 16 16">
65
+ <path
66
+ d="M14 4.5V14a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V2a2 2 0 0 1 2-2h5.5L14 4.5zm-3 0A1.5 1.5 0 0 1 9.5 3V1H4a1 1 0 0 0-1 1v12a1 1 0 0 0 1 1h8a1 1 0 0 0 1-1V4.5h-2z" />
67
+ </symbol>
68
+ <symbol id="file-earmark-text" viewBox="0 0 16 16">
69
+ <path
70
+ d="M5.5 7a.5.5 0 0 0 0 1h5a.5.5 0 0 0 0-1h-5zM5 9.5a.5.5 0 0 1 .5-.5h5a.5.5 0 0 1 0 1h-5a.5.5 0 0 1-.5-.5zm0 2a.5.5 0 0 1 .5-.5h2a.5.5 0 0 1 0 1h-2a.5.5 0 0 1-.5-.5z" />
71
+ <path
72
+ d="M9.5 0H4a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V4.5L9.5 0zm0 1v2A1.5 1.5 0 0 0 11 4.5h2V14a1 1 0 0 1-1 1H4a1 1 0 0 1-1-1V2a1 1 0 0 1 1-1h5.5z" />
73
+ </symbol>
74
+ <symbol id="gear-wide-connected" viewBox="0 0 16 16">
75
+ <path
76
+ d="M7.068.727c.243-.97 1.62-.97 1.864 0l.071.286a.96.96 0 0 0 1.622.434l.205-.211c.695-.719 1.888-.03 1.613.931l-.08.284a.96.96 0 0 0 1.187 1.187l.283-.081c.96-.275 1.65.918.931 1.613l-.211.205a.96.96 0 0 0 .434 1.622l.286.071c.97.243.97 1.62 0 1.864l-.286.071a.96.96 0 0 0-.434 1.622l.211.205c.719.695.03 1.888-.931 1.613l-.284-.08a.96.96 0 0 0-1.187 1.187l.081.283c.275.96-.918 1.65-1.613.931l-.205-.211a.96.96 0 0 0-1.622.434l-.071.286c-.243.97-1.62.97-1.864 0l-.071-.286a.96.96 0 0 0-1.622-.434l-.205.211c-.695.719-1.888.03-1.613-.931l.08-.284a.96.96 0 0 0-1.186-1.187l-.284.081c-.96.275-1.65-.918-.931-1.613l.211-.205a.96.96 0 0 0-.434-1.622l-.286-.071c-.97-.243-.97-1.62 0-1.864l.286-.071a.96.96 0 0 0 .434-1.622l-.211-.205c-.719-.695-.03-1.888.931-1.613l.284.08a.96.96 0 0 0 1.187-1.186l-.081-.284c-.275-.96.918-1.65 1.613-.931l.205.211a.96.96 0 0 0 1.622-.434l.071-.286zM12.973 8.5H8.25l-2.834 3.779A4.998 4.998 0 0 0 12.973 8.5zm0-1a4.998 4.998 0 0 0-7.557-3.779l2.834 3.78h4.723zM5.048 3.967c-.03.021-.058.043-.087.065l.087-.065zm-.431.355A4.984 4.984 0 0 0 3.002 8c0 1.455.622 2.765 1.615 3.678L7.375 8 4.617 4.322zm.344 7.646.087.065-.087-.065z" />
77
+ </symbol>
78
+ <symbol id="graph-up" viewBox="0 0 16 16">
79
+ <path fill-rule="evenodd"
80
+ d="M0 0h1v15h15v1H0V0Zm14.817 3.113a.5.5 0 0 1 .07.704l-4.5 5.5a.5.5 0 0 1-.74.037L7.06 6.767l-3.656 5.027a.5.5 0 0 1-.808-.588l4-5.5a.5.5 0 0 1 .758-.06l2.609 2.61 4.15-5.073a.5.5 0 0 1 .704-.07Z" />
81
+ </symbol>
82
+ <symbol id="house-fill" viewBox="0 0 16 16">
83
+ <path
84
+ d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L8 2.207l6.646 6.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.707 1.5Z" />
85
+ <path d="m8 3.293 6 6V13.5a1.5 1.5 0 0 1-1.5 1.5h-9A1.5 1.5 0 0 1 2 13.5V9.293l6-6Z" />
86
+ </symbol>
87
+ <symbol id="list" viewBox="0 0 16 16">
88
+ <path fill-rule="evenodd"
89
+ d="M2.5 12a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm0-4a.5.5 0 0 1 .5-.5h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5z" />
90
+ </symbol>
91
+ <symbol id="people" viewBox="0 0 16 16">
92
+ <path
93
+ d="M15 14s1 0 1-1-1-4-5-4-5 3-5 4 1 1 1 1h8Zm-7.978-1A.261.261 0 0 1 7 12.996c.001-.264.167-1.03.76-1.72C8.312 10.629 9.282 10 11 10c1.717 0 2.687.63 3.24 1.276.593.69.758 1.457.76 1.72l-.008.002a.274.274 0 0 1-.014.002H7.022ZM11 7a2 2 0 1 0 0-4 2 2 0 0 0 0 4Zm3-2a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM6.936 9.28a5.88 5.88 0 0 0-1.23-.247A7.35 7.35 0 0 0 5 9c-4 0-5 3-5 4 0 .667.333 1 1 1h4.216A2.238 2.238 0 0 1 5 13c0-1.01.377-2.042 1.09-2.904.243-.294.526-.569.846-.816ZM4.92 10A5.493 5.493 0 0 0 4 13H1c0-.26.164-1.03.76-1.724.545-.636 1.492-1.256 3.16-1.275ZM1.5 5.5a3 3 0 1 1 6 0 3 3 0 0 1-6 0Zm3-2a2 2 0 1 0 0 4 2 2 0 0 0 0-4Z" />
94
+ </symbol>
95
+ <symbol id="plus-circle" viewBox="0 0 16 16">
96
+ <path d="M8 15A7 7 0 1 1 8 1a7 7 0 0 1 0 14zm0 1A8 8 0 1 0 8 0a8 8 0 0 0 0 16z" />
97
+ <path
98
+ d="M8 4a.5.5 0 0 1 .5.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3A.5.5 0 0 1 8 4z" />
99
+ </symbol>
100
+ <symbol id="puzzle" viewBox="0 0 16 16">
101
+ <path
102
+ d="M3.112 3.645A1.5 1.5 0 0 1 4.605 2H7a.5.5 0 0 1 .5.5v.382c0 .696-.497 1.182-.872 1.469a.459.459 0 0 0-.115.118.113.113 0 0 0-.012.025L6.5 4.5v.003l.003.01c.004.01.014.028.036.053a.86.86 0 0 0 .27.194C7.09 4.9 7.51 5 8 5c.492 0 .912-.1 1.19-.24a.86.86 0 0 0 .271-.194.213.213 0 0 0 .039-.063v-.009a.112.112 0 0 0-.012-.025.459.459 0 0 0-.115-.118c-.375-.287-.872-.773-.872-1.469V2.5A.5.5 0 0 1 9 2h2.395a1.5 1.5 0 0 1 1.493 1.645L12.645 6.5h.237c.195 0 .42-.147.675-.48.21-.274.528-.52.943-.52.568 0 .947.447 1.154.862C15.877 6.807 16 7.387 16 8s-.123 1.193-.346 1.638c-.207.415-.586.862-1.154.862-.415 0-.733-.246-.943-.52-.255-.333-.48-.48-.675-.48h-.237l.243 2.855A1.5 1.5 0 0 1 11.395 14H9a.5.5 0 0 1-.5-.5v-.382c0-.696.497-1.182.872-1.469a.459.459 0 0 0 .115-.118.113.113 0 0 0 .012-.025L9.5 11.5v-.003a.214.214 0 0 0-.039-.064.859.859 0 0 0-.27-.193C8.91 11.1 8.49 11 8 11c-.491 0-.912.1-1.19.24a.859.859 0 0 0-.271.194.214.214 0 0 0-.039.063v.003l.001.006a.113.113 0 0 0 .012.025c.016.027.05.068.115.118.375.287.872.773.872 1.469v.382a.5.5 0 0 1-.5.5H4.605a1.5 1.5 0 0 1-1.493-1.645L3.356 9.5h-.238c-.195 0-.42.147-.675.48-.21.274-.528.52-.943.52-.568 0-.947-.447-1.154-.862C.123 9.193 0 8.613 0 8s.123-1.193.346-1.638C.553 5.947.932 5.5 1.5 5.5c.415 0 .733.246.943.52.255.333.48.48.675.48h.238l-.244-2.855zM4.605 3a.5.5 0 0 0-.498.55l.001.007.29 3.4A.5.5 0 0 1 3.9 7.5h-.782c-.696 0-1.182-.497-1.469-.872a.459.459 0 0 0-.118-.115.112.112 0 0 0-.025-.012L1.5 6.5h-.003a.213.213 0 0 0-.064.039.86.86 0 0 0-.193.27C1.1 7.09 1 7.51 1 8c0 .491.1.912.24 1.19.07.14.14.225.194.271a.213.213 0 0 0 .063.039H1.5l.006-.001a.112.112 0 0 0 .025-.012.459.459 0 0 0 .118-.115c.287-.375.773-.872 1.469-.872H3.9a.5.5 0 0 1 .498.542l-.29 3.408a.5.5 0 0 0 .497.55h1.878c-.048-.166-.195-.352-.463-.557-.274-.21-.52-.528-.52-.943 0-.568.447-.947.862-1.154C6.807 10.123 7.387 10 8 10s1.193.123 1.638.346c.415.207.862.586.862 1.154 0 .415-.246.733-.52.943-.268.205-.415.39-.463.557h1.878a.5.5 0 0 0 .498-.55l-.001-.007-.29-3.4A.5.5 0 0 1 12.1 8.5h.782c.696 0 1.182.497 1.469.872.05.065.091.099.118.115.013.008.021.01.025.012a.02.02 0 0 0 .006.001h.003a.214.214 0 0 0 .064-.039.86.86 0 0 0 .193-.27c.14-.28.24-.7.24-1.191 0-.492-.1-.912-.24-1.19a.86.86 0 0 0-.194-.271.215.215 0 0 0-.063-.039H14.5l-.006.001a.113.113 0 0 0-.025.012.459.459 0 0 0-.118.115c-.287.375-.773.872-1.469.872H12.1a.5.5 0 0 1-.498-.543l.29-3.407a.5.5 0 0 0-.497-.55H9.517c.048.166.195.352.463.557.274.21.52.528.52.943 0 .568-.447.947-.862 1.154C9.193 5.877 8.613 6 8 6s-1.193-.123-1.638-.346C5.947 5.447 5.5 5.068 5.5 4.5c0-.415.246-.733.52-.943.268-.205.415-.39.463-.557H4.605z" />
103
+ </symbol>
104
+ <symbol id="search" viewBox="0 0 16 16">
105
+ <path
106
+ d="M11.742 10.344a6.5 6.5 0 1 0-1.397 1.398h-.001c.03.04.062.078.098.115l3.85 3.85a1 1 0 0 0 1.415-1.414l-3.85-3.85a1.007 1.007 0 0 0-.115-.1zM12 6.5a5.5 5.5 0 1 1-11 0 5.5 5.5 0 0 1 11 0z" />
107
+ </symbol>
108
+ </svg>
109
+
110
+ <header id="header" class="navbar sticky-top p-0 shadow">
111
+ <!-- Left-aligned elements -->
112
+ <button class="nav-link px-3 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#sidebarMenu"
113
+ aria-controls="sidebarMenu" aria-expanded="false" aria-label="Toggle navigation">
114
+ <svg class="bi">
115
+ <use xlink:href="#list" />
116
+ </svg>
117
+ </button>
118
+
119
+ <a id="logo" href="${specLogoLink}">
120
+ <img class="m-1" src="${specLogo}" alt="" />
121
+ </a>
122
+ <!-- <a class="navbar-brand col-md-3 col-lg-2 me-0 px-3 fs-6 text-white" href="#">Spec-Up-T</a> -->
123
+
124
+ <!-- Spacer to push the following elements to the right -->
125
+ <div class="flex-grow-1"></div>
126
+
127
+ <!-- Right-aligned elements -->
128
+ <div class="d-flex align-items-center">
129
+
130
+ <!-- Issues side menu -->
131
+ <button id="repo_issues" issue-count animate class="btn btn-sm btn-outline-secondary ms-2" type="button"
132
+ data-bs-toggle="offcanvas" data-bs-target="#offcanvasIssues" aria-controls="offcanvasIssues">
133
+ Issues
134
+ </button>
135
+
136
+ <!-- Dark / Light theme selector -->
137
+ <div class="dropdown bd-mode-toggle me-2">
138
+ <button
139
+ class="btn btn-bd-primary btn-sm btn-outline-secondary dropdown-toggle d-flex align-items-center"
140
+ id="bd-theme" type="button" aria-expanded="false" data-bs-toggle="dropdown"
141
+ aria-label="Toggle theme (auto)">
142
+ <svg class="bi theme-icon-active" width="1em" height="1em">
143
+ <use href="#circle-half"></use>
52
144
  </svg>
53
- <span issue-count></span>
54
- </span>
55
- <span class="repo-issue-toggle" panel-toggle="repo_issues">✕</span>
56
- </header>
57
- <ul id="repo_issue_list"></ul>
58
- </slide-panel>
59
-
60
- <slide-panel id="toc">
61
- <header class="panel-header">
62
- <span>Table of Contents</span>
63
- <span panel-toggle="toc">✕</span>
64
- </header>
65
- <div id="toc_list">
66
- ${toc}
145
+ <span class="visually-hidden" id="bd-theme-text">Toggle theme</span>
146
+ </button>
147
+ <ul class="dropdown-menu dropdown-menu-end shadow" aria-labelledby="bd-theme-text">
148
+ <li>
149
+ <button type="button" class="dropdown-item d-flex align-items-center"
150
+ data-bs-theme-value="light" aria-pressed="false">
151
+ <svg class="bi me-2 opacity-50" width="1em" height="1em">
152
+ <use href="#sun-fill"></use>
153
+ </svg>
154
+ Light
155
+ <svg class="bi ms-auto d-none" width="1em" height="1em">
156
+ <use href="#check2"></use>
157
+ </svg>
158
+ </button>
159
+ </li>
160
+ <li>
161
+ <button type="button" class="dropdown-item d-flex align-items-center" data-bs-theme-value="dark"
162
+ aria-pressed="false">
163
+ <svg class="bi me-2 opacity-50" width="1em" height="1em">
164
+ <use href="#moon-stars-fill"></use>
165
+ </svg>
166
+ Dark
167
+ <svg class="bi ms-auto d-none" width="1em" height="1em">
168
+ <use href="#check2"></use>
169
+ </svg>
170
+ </button>
171
+ </li>
172
+ </ul>
173
+ </div>
174
+
175
+ <!-- Font size -->
176
+ <div class="adjust-font-size btn-group me-2" role="group">
177
+ <button title="Decrease font size" type="button"
178
+ class="btn btn-sm btn-outline-secondary m-0 p-3 border-end-0" id="decreaseBtn"><span
179
+ class="visually-hidden">Decrease font size</span>
180
+ </button>
181
+ <!-- <button type="button" class="btn btn-sm btn-outline-secondary m-0 px-2" id="resetBtn">0</button> -->
182
+ <button title="Increase font size" type="button"
183
+ class="btn btn-sm btn-outline-secondary m-0 p-3 border-start-0" id="increaseBtn">
184
+ <span class="visually-hidden">Increase font size</span>
185
+ </button>
186
+ </div>
187
+ </div>
188
+ </header>
189
+
190
+ <div class="container">
191
+ <div class="row">
192
+ <div class="sidebar border border-right col-md-4 col-lg-3 bg-body-tertiary">
193
+ <div class="offcanvas-md offcanvas-start bg-body-tertiary p-2 pt-5" tabindex="-1" id="sidebarMenu"
194
+ aria-labelledby="sidebarMenuLabel">
195
+ <div class="offcanvas-header">
196
+ <h5 id="sidebarMenuLabel">Table of Contents</h5>
197
+ <button type="button" class="btn-close" data-bs-dismiss="offcanvas"
198
+ data-bs-target="#sidebarMenu" aria-label="Close"></button>
199
+ </div>
200
+ <div id="toc" class="offcanvas-body d-md-flex flex-column p-0 pt-lg-3 overflow-y-auto">
201
+ ${toc}
202
+ <!-- href added via JS -->
203
+ <a class="btn btn-outline-secondary mt-5" href="#">Snapshots</a>
204
+ <a class="powered-by mx-auto p-2" href="https://github.com/trustoverip/spec-up-t"
205
+ target="_blank" rel="noopener">Powered By Spec-Up-T</a>
206
+ </div>
207
+ </div>
208
+ </div>
209
+
210
+ <main class="col-md-8 ms-sm-auto col-lg-9 px-md-4 pt-5">
211
+ <article id="content" class="">
212
+ ${render}
213
+ </article>
214
+
215
+ </main>
216
+ </div>
217
+ </div>
218
+
219
+ <div class="offcanvas offcanvas-end" tabindex="-1" id="offcanvasIssues" aria-labelledby="offcanvasIssuesLabel">
220
+ <div class="offcanvas-header">
221
+ <h5 class="offcanvas-title" id="offcanvasIssuesLabel">Issues</h5>
222
+ <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
223
+ </div>
224
+ <div class="offcanvas-body">
225
+ <div>
226
+ <ul id="repo_issue_list"></ul>
67
227
  </div>
68
- <!-- href added via JS -->
69
- <div class="snapshots"><a href="#">Snapshots</a></div>
70
- <div class="powered-by"><a href="https://github.com/trustoverip/spec-up-t" target="_blank" rel="noopener">Powered By Spec-Up-T</a></div>
71
- </slide-panel>
72
- </slide-panels>
228
+ </div>
229
+ </div>
73
230
  <div style="display: none;">
74
231
  ${externalReferences}
75
232
  </div>
233
+
234
+ <script>window.specConfig = ${ spec }</script>
235
+ ${assetsBody}
236
+ <script src="https://cdn.jsdelivr.net/npm/chart.js@4.3.2/dist/chart.umd.js"
237
+ integrity="sha384-eI7PSr3L1XLISH8JdDII5YN/njoSsxfbrkCTnJrzXt+ENP5MOVBxD+l6sEG4zoLp"
238
+ crossorigin="anonymous"></script>
76
239
  </body>
77
- <script>window.specConfig = ${ spec }</script>
78
- ${assetsBody}
79
240
 
80
241
  </html>
@@ -1,91 +0,0 @@
1
- /* Basic Bootstrap Button Styles, edited by Kor Dwarshuis */
2
- .btn {
3
- display: inline-block;
4
- text-align: center;
5
- white-space: nowrap;
6
- vertical-align: middle;
7
- /* user-select: none; */
8
- border: 1px solid #1D6DAE;
9
- /* Ensure border is applied */
10
- padding: 0.2rem 0.4rem;
11
- font-size: 1rem;
12
- /* Font size consistency */
13
- line-height: 1.5;
14
- border-radius: 0.25rem;
15
- transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
16
- color: #111;
17
- background-color: transparent;
18
- /* Ensure background color consistency */
19
- text-decoration: none;
20
- cursor: pointer;
21
- /* Ensure pointer cursor */
22
- }
23
-
24
- /* Normalize button and a element */
25
- .btn,
26
- .btn:link,
27
- .btn:visited {
28
- text-decoration: none;
29
- }
30
-
31
- .btn:hover,
32
- .btn:focus {
33
- text-decoration: none;
34
- outline: 0;
35
- color: #fff;
36
- background-color: #0056b3;
37
- border-color: #004085;
38
- box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
39
- }
40
-
41
- .btn.disabled,
42
- .btn:disabled {
43
- opacity: 0.65;
44
- pointer-events: none;
45
- color: #fff;
46
- background-color: #1D6DAE;
47
- border-color: #1D6DAE;
48
- }
49
-
50
- /* Focus state for accessibility */
51
- .btn:focus {
52
- outline: none;
53
- }
54
-
55
- .btn:not(:disabled):not(.disabled):active,
56
- .btn:not(:disabled):not(.disabled).active,
57
- .show>.btn.dropdown-toggle {
58
- color: #fff;
59
- background-color: #004085;
60
- border-color: #002752;
61
- }
62
-
63
- .btn:not(:disabled):not(.disabled):active:focus,
64
- .btn:not(:disabled):not(.disabled).active:focus,
65
- .show>.btn.dropdown-toggle:focus {
66
- box-shadow: 0 0 0 0.2rem rgba(38, 143, 255, 0.5);
67
- }
68
-
69
- /* Remove default button and anchor styles */
70
- a.btn {
71
- display: inline-block;
72
- }
73
-
74
- button.btn {
75
- border: 1px solid #1D6DAE;
76
- /* Reapply the border */
77
- padding: 0.2rem 0.4rem;
78
- /* Ensure padding matches */
79
- background-color: transparent;
80
- /* Match default background */
81
- color: inherit;
82
- /* Match font color */
83
- font-size: 1rem;
84
- /* Ensure font size consistency */
85
- line-height: 1.5;
86
- /* Ensure visual height consistency */
87
- cursor: pointer;
88
- /* Ensure pointer cursor */
89
- }
90
-
91
- /* End Basic Bootstrap Button Styles */