jekyll-theme-zer0 1.25.0 → 1.27.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +201 -0
- data/README.md +11 -28
- data/_data/authors.yml +4 -3
- data/_data/backlog.yml +54 -1
- data/_data/features.yml +101 -61
- data/_data/feedback_types.yml +148 -0
- data/_data/i18n/languages.yml +36 -0
- data/_data/navigation/README.md +1 -1
- data/_data/theme-manifest.yml +0 -2
- data/_data/ui-text.yml +36 -246
- data/_includes/README.md +4 -0
- data/_includes/components/README.md +1 -0
- data/_includes/components/author-avatar-url.html +4 -2
- data/_includes/components/env-switcher.html +3 -1
- data/_includes/components/language-toggle.html +81 -0
- data/_includes/components/page-feedback.html +252 -0
- data/_includes/components/search-modal.html +2 -2
- data/_includes/components/shortcuts-modal.html +1 -1
- data/_includes/components/translation-notice.html +27 -0
- data/_includes/content/intro.html +35 -76
- data/_includes/core/console-capture.html +89 -0
- data/_includes/core/footer.html +9 -4
- data/_includes/core/head.html +13 -0
- data/_includes/core/header.html +9 -4
- data/_includes/core/hreflang.html +33 -0
- data/_includes/core/i18n.html +36 -0
- data/_includes/navigation/breadcrumbs.html +1 -1
- data/_includes/navigation/navbar.html +5 -4
- data/_includes/navigation/sidebar-right.html +3 -2
- data/_includes/navigation/unified-drawer.html +1 -1
- data/_layouts/article.html +7 -1
- data/_layouts/default.html +5 -3
- data/_layouts/news.html +4 -2
- data/_layouts/root.html +17 -8
- data/_layouts/section.html +4 -2
- data/_sass/components/_page-feedback.scss +276 -0
- data/_sass/core/_docs-layout.scss +2 -78
- data/_sass/core/_obsidian.scss +9 -1
- data/_sass/layouts/_navbar-extras.scss +6 -1
- data/_sass/tokens/_layers.scss +4 -0
- data/assets/css/main.scss +1 -0
- data/assets/js/obsidian-graph.js +5 -1
- data/assets/js/page-feedback.js +660 -0
- data/scripts/README.md +20 -26
- data/scripts/bin/audit-consumer +1 -1
- data/scripts/bin/manifest +0 -1
- data/scripts/bin/sync-plugins +0 -1
- data/scripts/dev/rasterize-svg.js +65 -0
- data/scripts/features/generate-preview-images +49 -1390
- data/scripts/features/install-preview-generator +55 -33
- data/scripts/install/README.md +9 -20
- data/scripts/install/ai/prompts/wizard.system.md +8 -17
- data/scripts/lib/README.md +1 -5
- data/scripts/lib/install/deploy/README.md +3 -9
- data/scripts/lib/preview_generator.py +2261 -1341
- data/scripts/translate.rb +1114 -0
- metadata +14 -4
- data/_data/prompts.yml +0 -302
- data/_plugins/preview_image_generator.rb +0 -351
|
@@ -546,7 +546,8 @@ a.bd-intro-badge--tag:focus {
|
|
|
546
546
|
white-space: nowrap;
|
|
547
547
|
}
|
|
548
548
|
|
|
549
|
-
// Plain link buttons: reserve the same trailing space as .dropdown-toggle::after
|
|
549
|
+
// Plain link buttons: reserve the same trailing space as .dropdown-toggle::after
|
|
550
|
+
// so the plain "Improve" / "Edit on GitHub" buttons line up with the Share caret.
|
|
550
551
|
.bd-intro-action-link.btn::after {
|
|
551
552
|
content: "";
|
|
552
553
|
display: inline-block;
|
|
@@ -554,83 +555,6 @@ a.bd-intro-badge--tag:focus {
|
|
|
554
555
|
flex-shrink: 0;
|
|
555
556
|
visibility: hidden;
|
|
556
557
|
}
|
|
557
|
-
|
|
558
|
-
// Copilot Agent prompt menu — compact, proportional to the trigger button.
|
|
559
|
-
// Scoped here so the Share dropdown keeps Bootstrap defaults.
|
|
560
|
-
.copilot-agent-menu.dropdown-menu {
|
|
561
|
-
--bs-dropdown-min-width: 0;
|
|
562
|
-
width: max-content;
|
|
563
|
-
max-width: min(22rem, 90vw);
|
|
564
|
-
padding: var(--zer0-space-1) 0;
|
|
565
|
-
border-radius: var(--bs-border-radius);
|
|
566
|
-
border-color: var(--zer0-color-border);
|
|
567
|
-
}
|
|
568
|
-
|
|
569
|
-
.copilot-agent-menu {
|
|
570
|
-
.dropdown-header {
|
|
571
|
-
padding: var(--zer0-space-1) var(--zer0-space-2) calc(var(--zer0-space-1) * .5);
|
|
572
|
-
font-size: var(--zer0-text-sm);
|
|
573
|
-
font-weight: var(--zer0-font-weight-semibold);
|
|
574
|
-
line-height: var(--zer0-leading-tight);
|
|
575
|
-
color: var(--zer0-color-ink-muted);
|
|
576
|
-
white-space: normal;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
.dropdown-divider {
|
|
580
|
-
margin: var(--zer0-space-1) 0;
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
.dropdown-item {
|
|
584
|
-
white-space: normal;
|
|
585
|
-
padding: var(--zer0-space-1) var(--zer0-space-2);
|
|
586
|
-
line-height: var(--zer0-leading-normal);
|
|
587
|
-
border-radius: calc(var(--bs-border-radius) - 2px);
|
|
588
|
-
|
|
589
|
-
&:hover,
|
|
590
|
-
&:focus {
|
|
591
|
-
.copilot-agent-item__desc {
|
|
592
|
-
color: inherit;
|
|
593
|
-
opacity: .85;
|
|
594
|
-
}
|
|
595
|
-
}
|
|
596
|
-
}
|
|
597
|
-
}
|
|
598
|
-
|
|
599
|
-
.copilot-agent-item {
|
|
600
|
-
display: flex;
|
|
601
|
-
align-items: flex-start;
|
|
602
|
-
gap: var(--zer0-space-2);
|
|
603
|
-
min-width: 0;
|
|
604
|
-
}
|
|
605
|
-
|
|
606
|
-
.copilot-agent-item__icon {
|
|
607
|
-
flex-shrink: 0;
|
|
608
|
-
margin-top: .125rem;
|
|
609
|
-
font-size: var(--zer0-text-sm);
|
|
610
|
-
line-height: 1;
|
|
611
|
-
opacity: .85;
|
|
612
|
-
}
|
|
613
|
-
|
|
614
|
-
.copilot-agent-item__text {
|
|
615
|
-
display: flex;
|
|
616
|
-
flex-direction: column;
|
|
617
|
-
gap: .125rem;
|
|
618
|
-
min-width: 0;
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
.copilot-agent-item__label {
|
|
622
|
-
font-size: var(--zer0-text-sm);
|
|
623
|
-
font-weight: var(--zer0-font-weight-medium);
|
|
624
|
-
line-height: var(--zer0-leading-tight);
|
|
625
|
-
}
|
|
626
|
-
|
|
627
|
-
.copilot-agent-item__desc {
|
|
628
|
-
display: block;
|
|
629
|
-
font-size: .8125rem;
|
|
630
|
-
font-weight: var(--zer0-font-weight-regular);
|
|
631
|
-
line-height: var(--zer0-leading-normal);
|
|
632
|
-
color: var(--zer0-color-ink-muted);
|
|
633
|
-
}
|
|
634
558
|
}
|
|
635
559
|
|
|
636
560
|
.bd-toc {
|
data/_sass/core/_obsidian.scss
CHANGED
|
@@ -208,11 +208,19 @@
|
|
|
208
208
|
// in _sass/theme/_backgrounds.scss (specificity 0,5,0) and forces
|
|
209
209
|
// `position: relative; z-index: 1` — dropping the FAB into page flow at the
|
|
210
210
|
// bottom. An id (1,0,0) wins, mirroring `#aiChatToggle`. See ai-chat.html.
|
|
211
|
+
//
|
|
212
|
+
// Slot 2 on the left-side FAB stack: sits above the page-feedback FAB
|
|
213
|
+
// (slot 1 = var(--zer0-space-fab-offset)) — same stacking formula as
|
|
214
|
+
// .bd-toc-fab above #backToTopBtn on the right side.
|
|
211
215
|
#obsidianLocalGraphFab.obsidian-local-graph-fab {
|
|
212
216
|
position: fixed;
|
|
213
217
|
left: var(--zer0-space-fab-offset, 1rem);
|
|
214
218
|
right: auto;
|
|
215
|
-
bottom:
|
|
219
|
+
bottom: calc(
|
|
220
|
+
var(--zer0-space-fab-offset, 1rem) +
|
|
221
|
+
var(--zer0-space-fab-size, 3.5rem) +
|
|
222
|
+
var(--zer0-space-fab-gap, 0.75rem)
|
|
223
|
+
);
|
|
216
224
|
z-index: var(--zer0-layer-fab-local-graph);
|
|
217
225
|
|
|
218
226
|
&[hidden] {
|
|
@@ -80,7 +80,12 @@
|
|
|
80
80
|
&.bd-sidebar-fab--restore,
|
|
81
81
|
html.bd-sidebar-pref-hidden &.bd-sidebar-fab {
|
|
82
82
|
display: block !important;
|
|
83
|
-
|
|
83
|
+
// Stay at slot 2 (above the feedback FAB at slot 1) so neither overlaps.
|
|
84
|
+
bottom: calc(
|
|
85
|
+
var(--zer0-space-fab-offset, 1rem) +
|
|
86
|
+
var(--zer0-space-fab-size, 3.5rem) +
|
|
87
|
+
var(--zer0-space-fab-gap, 0.75rem)
|
|
88
|
+
);
|
|
84
89
|
}
|
|
85
90
|
|
|
86
91
|
@media (min-width: 992px) {
|
data/_sass/tokens/_layers.scss
CHANGED
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
// Floating action buttons (stack bottom-to-top) --------------------------
|
|
20
20
|
--zer0-layer-fab-back-to-top: 1050;
|
|
21
|
+
--zer0-layer-fab-feedback: 1051; // page-feedback FAB (bottom-left)
|
|
21
22
|
--zer0-layer-fab-chat: 1052;
|
|
22
23
|
--zer0-layer-fab-toc: 1055;
|
|
23
24
|
--zer0-layer-fab-local-graph: 1060;
|
|
@@ -25,6 +26,9 @@
|
|
|
25
26
|
// Overlay surfaces -------------------------------------------------------
|
|
26
27
|
--zer0-layer-offcanvas: 1045;
|
|
27
28
|
--zer0-layer-modal: 1055;
|
|
29
|
+
--zer0-layer-feedback-modal: 1096; // page-feedback dialog — a focused dialog wins over
|
|
30
|
+
// every FAB, toast, AND the cookie banner (1095) so its
|
|
31
|
+
// controls are never intercepted; still below skip-link (1100)
|
|
28
32
|
--zer0-layer-popover: 1070;
|
|
29
33
|
--zer0-layer-tooltip: 1080;
|
|
30
34
|
|
data/assets/css/main.scss
CHANGED
data/assets/js/obsidian-graph.js
CHANGED
|
@@ -28,7 +28,11 @@
|
|
|
28
28
|
'use strict';
|
|
29
29
|
|
|
30
30
|
var CONTAINER_ID = 'obsidian-graph';
|
|
31
|
-
|
|
31
|
+
// Index URL resolution mirrors obsidian-wiki-links.js: the baseurl-aware
|
|
32
|
+
// value js-cdn.html emits (OBSIDIAN_CONFIG.wikiIndexUrl), then the legacy
|
|
33
|
+
// per-page override global, then a <base>-relative fallback.
|
|
34
|
+
var INDEX_URL = ((window.OBSIDIAN_CONFIG || {}).wikiIndexUrl ||
|
|
35
|
+
window.OBSIDIAN_WIKI_INDEX_URL ||
|
|
32
36
|
((document.querySelector('base') || {}).href || '/') + 'assets/data/wiki-index.json');
|
|
33
37
|
|
|
34
38
|
function normalize(value) {
|