@kenjura/ursa 0.75.0 → 0.77.0
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.
- package/CHANGELOG.md +85 -0
- package/meta/default.css +149 -3
- package/meta/templates/default-template/default.css +1268 -0
- package/meta/{default-template.html → templates/default-template/index.html} +49 -2
- package/meta/{menu.js → templates/default-template/menu.js} +1 -1
- package/meta/templates/default-template/sectionify.js +46 -0
- package/meta/templates/default-template/widgets.js +701 -0
- package/package.json +1 -1
- package/src/dev.js +125 -34
- package/src/helper/assetBundler.js +471 -0
- package/src/helper/build/autoIndex.js +26 -23
- package/src/helper/build/cacheBust.js +79 -0
- package/src/helper/build/navCache.js +4 -0
- package/src/helper/build/templates.js +176 -19
- package/src/helper/build/watchCache.js +7 -0
- package/src/helper/customMenu.js +4 -2
- package/src/helper/dependencyTracker.js +269 -0
- package/src/helper/findScriptJs.js +29 -0
- package/src/helper/findStyleCss.js +29 -0
- package/src/helper/portUtils.js +132 -0
- package/src/jobs/generate.js +276 -59
- package/src/serve.js +446 -162
- package/meta/character-sheet.css +0 -50
- package/meta/widgets.js +0 -376
- /package/meta/{goudy_bookletter_1911-webfont.woff → shared/goudy_bookletter_1911-webfont.woff} +0 -0
- /package/meta/{character-sheet/css → templates/character-sheet-template}/character-sheet.css +0 -0
- /package/meta/{character-sheet/js → templates/character-sheet-template}/components.js +0 -0
- /package/meta/{cssui.bundle.min.css → templates/character-sheet-template/cssui.bundle.min.css} +0 -0
- /package/meta/{character-sheet-template.html → templates/character-sheet-template/index.html} +0 -0
- /package/meta/{character-sheet/js → templates/character-sheet-template}/main.js +0 -0
- /package/meta/{character-sheet/js → templates/character-sheet-template}/model.js +0 -0
- /package/meta/{search.js → templates/default-template/search.js} +0 -0
- /package/meta/{sticky.js → templates/default-template/sticky.js} +0 -0
- /package/meta/{toc-generator.js → templates/default-template/toc-generator.js} +0 -0
- /package/meta/{toc.js → templates/default-template/toc.js} +0 -0
- /package/meta/{template2.html → templates/template2/index.html} +0 -0
|
@@ -10,7 +10,20 @@
|
|
|
10
10
|
|
|
11
11
|
<body data-template-id="default">
|
|
12
12
|
<nav id="nav-global">
|
|
13
|
-
<
|
|
13
|
+
<div class="nav-left-controls">
|
|
14
|
+
<button class="menu-button" aria-label="Menu">☰</button>
|
|
15
|
+
<div class="widget-bar widget-bar-left">
|
|
16
|
+
<button class="widget-button" data-widget="recent-activity" data-widget-side="left" aria-label="Recent Activity" title="Recent Activity">
|
|
17
|
+
<span class="widget-icon">🕒</span>
|
|
18
|
+
</button>
|
|
19
|
+
<button class="widget-button" data-widget="suggested" data-widget-side="left" aria-label="Suggested Content" title="Suggested Content">
|
|
20
|
+
<span class="widget-icon">⭐</span>
|
|
21
|
+
</button>
|
|
22
|
+
</div>
|
|
23
|
+
<div id="ursa-update-indicator" class="ursa-update-indicator" style="display:none;" title="Updating...">
|
|
24
|
+
<div class="ursa-spinner"></div>
|
|
25
|
+
</div>
|
|
26
|
+
</div>
|
|
14
27
|
|
|
15
28
|
<div class="nav-center">
|
|
16
29
|
<nav id="nav-main-top">
|
|
@@ -37,15 +50,49 @@
|
|
|
37
50
|
</div>
|
|
38
51
|
</nav>
|
|
39
52
|
|
|
40
|
-
<!-- Widget dropdown panel
|
|
53
|
+
<!-- Widget dropdown panel for LEFT-side widgets -->
|
|
54
|
+
<div id="widget-dropdown-left" class="widget-dropdown widget-dropdown-left hidden">
|
|
55
|
+
<div id="widget-content-recent-activity" class="widget-content" data-widget="recent-activity">
|
|
56
|
+
<div class="widget-header">
|
|
57
|
+
<span class="widget-header-title">Recent Activity</span>
|
|
58
|
+
<button class="widget-close-btn" aria-label="Close">✕</button>
|
|
59
|
+
</div>
|
|
60
|
+
<div class="recent-activity-list">
|
|
61
|
+
<!-- Populated by JavaScript -->
|
|
62
|
+
</div>
|
|
63
|
+
</div>
|
|
64
|
+
<div id="widget-content-suggested" class="widget-content" data-widget="suggested">
|
|
65
|
+
<div class="widget-header">
|
|
66
|
+
<span class="widget-header-title">Suggested</span>
|
|
67
|
+
<button class="widget-close-btn" aria-label="Close">✕</button>
|
|
68
|
+
</div>
|
|
69
|
+
<div class="suggested-content-list">
|
|
70
|
+
<!-- Populated by JavaScript -->
|
|
71
|
+
</div>
|
|
72
|
+
</div>
|
|
73
|
+
</div>
|
|
74
|
+
|
|
75
|
+
<!-- Widget dropdown panel for RIGHT-side widgets -->
|
|
41
76
|
<div id="widget-dropdown" class="widget-dropdown hidden">
|
|
42
77
|
<div id="widget-content-toc" class="widget-content" data-widget="toc">
|
|
78
|
+
<div class="widget-header">
|
|
79
|
+
<span class="widget-header-title">Table of Contents</span>
|
|
80
|
+
<button class="widget-close-btn" aria-label="Close">✕</button>
|
|
81
|
+
</div>
|
|
43
82
|
<!-- TOC will be generated by JavaScript -->
|
|
44
83
|
</div>
|
|
45
84
|
<div id="widget-content-search" class="widget-content" data-widget="search">
|
|
85
|
+
<div class="widget-header">
|
|
86
|
+
<span class="widget-header-title">Search</span>
|
|
87
|
+
<button class="widget-close-btn" aria-label="Close">✕</button>
|
|
88
|
+
</div>
|
|
46
89
|
<!-- Search input + results placed here by JS -->
|
|
47
90
|
</div>
|
|
48
91
|
<div id="widget-content-profile" class="widget-content" data-widget="profile">
|
|
92
|
+
<div class="widget-header">
|
|
93
|
+
<span class="widget-header-title">Profile</span>
|
|
94
|
+
<button class="widget-close-btn" aria-label="Close">✕</button>
|
|
95
|
+
</div>
|
|
49
96
|
<div class="widget-profile-placeholder">
|
|
50
97
|
<span class="widget-profile-avatar">👤</span>
|
|
51
98
|
<p>Sign in to access your profile</p>
|
|
@@ -11,7 +11,7 @@ document.addEventListener('DOMContentLoaded', () => {
|
|
|
11
11
|
const navMain = document.querySelector('nav#nav-main');
|
|
12
12
|
const navMainTop = document.querySelector('nav#nav-main-top');
|
|
13
13
|
const menuPosition = document.body.dataset.menuPosition || 'top';
|
|
14
|
-
|
|
14
|
+
|
|
15
15
|
// If menu position is top (default), handle differently
|
|
16
16
|
if (menuPosition === 'top') {
|
|
17
17
|
initTopMenu();
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
2
|
+
const article = document.querySelector('article#main-content');
|
|
3
|
+
if (!article) return;
|
|
4
|
+
|
|
5
|
+
const children = Array.from(article.children);
|
|
6
|
+
let sections = [];
|
|
7
|
+
let currentSection = document.createElement('section');
|
|
8
|
+
currentSection.classList.add('sectionOuter');
|
|
9
|
+
|
|
10
|
+
for (let i = 0; i < children.length; i++) {
|
|
11
|
+
const el = children[i];
|
|
12
|
+
// Skip breadcrumb nav — it stays outside sections
|
|
13
|
+
if (el.classList && el.classList.contains('breadcrumbs')) continue;
|
|
14
|
+
if (el.tagName === 'H1' && currentSection.childNodes.length > 0) {
|
|
15
|
+
sections.push(currentSection);
|
|
16
|
+
currentSection = document.createElement('section');
|
|
17
|
+
currentSection.classList.add('sectionOuter');
|
|
18
|
+
}
|
|
19
|
+
currentSection.appendChild(el);
|
|
20
|
+
}
|
|
21
|
+
if (currentSection.childNodes.length > 0) {
|
|
22
|
+
sections.push(currentSection);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
// Preserve breadcrumb nav before clearing
|
|
26
|
+
const breadcrumbs = article.querySelector('.breadcrumbs');
|
|
27
|
+
|
|
28
|
+
// Remove all existing children
|
|
29
|
+
while (article.firstChild) {
|
|
30
|
+
article.removeChild(article.firstChild);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
// Re-insert breadcrumbs at the top, outside any section
|
|
34
|
+
if (breadcrumbs) {
|
|
35
|
+
article.appendChild(breadcrumbs);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// Append new sections
|
|
39
|
+
sections.forEach(section => article.appendChild(section));
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
// Optional: Add section numbers or other decorations
|
|
43
|
+
Array.from(article.querySelectorAll('section.sectionOuter')).forEach((section, index) => {
|
|
44
|
+
section.style.setProperty('--section-index', index + 1);
|
|
45
|
+
});
|
|
46
|
+
});
|