diff --git a/docs/configuration.md b/docs/configuration.md
index e3781af..ea8c76e 100644
--- a/docs/configuration.md
+++ b/docs/configuration.md
@@ -356,7 +356,7 @@ pages:
### Properties
| Name | Type | Required | Default |
| ---- | ---- | -------- | ------- |
-| title | string | yes | |
+| name | string | yes | |
| slug | string | no | |
| width | string | no | |
| center-vertically | boolean | no | false |
@@ -374,7 +374,7 @@ The URL friendly version of the title which is used to access the page. For exam
#### `width`
The maximum width of the page on desktop. Possible values are `slim` and `wide`.
-* default: `1600px`
+* default: `1600px` (when no value is specified)
* slim: `1100px`
* wide: `1920px`
diff --git a/docs/images/themes/gruvbox.png b/docs/images/themes/gruvbox.png
new file mode 100644
index 0000000..2e5b7a9
Binary files /dev/null and b/docs/images/themes/gruvbox.png differ
diff --git a/docs/themes.md b/docs/themes.md
index b4185db..285b032 100644
--- a/docs/themes.md
+++ b/docs/themes.md
@@ -53,6 +53,16 @@ theme:
primary-color: 97 13 80
```
+### Gruvbox Dark
+
+```yaml
+theme:
+ background-color: 0 0 16
+ primary-color: 43 59 81
+ positive-color: 61 66 44
+ negative-color: 6 96 59
+```
+
### Kanagawa Dark

```yaml
diff --git a/internal/glance/glance.go b/internal/glance/glance.go
index b1fcc37..8fb3e40 100644
--- a/internal/glance/glance.go
+++ b/internal/glance/glance.go
@@ -68,7 +68,7 @@ func newApplication(config *config) (*application, error) {
for w := range column.Widgets {
widget := column.Widgets[w]
- app.widgetByID[widget.id()] = widget
+ app.widgetByID[widget.GetID()] = widget
widget.setProviders(providers)
}
diff --git a/internal/glance/static/js/main.js b/internal/glance/static/js/main.js
index a10804e..dcd8946 100644
--- a/internal/glance/static/js/main.js
+++ b/internal/glance/static/js/main.js
@@ -284,7 +284,9 @@ function setupGroups() {
for (let i = 0; i < titles.length; i++) {
titles[i].classList.remove("widget-group-title-current");
+ titles[i].setAttribute("aria-selected", "false");
tabs[i].classList.remove("widget-group-content-current");
+ tabs[i].setAttribute("aria-hidden", "true");
}
if (current < t) {
@@ -296,7 +298,9 @@ function setupGroups() {
current = t;
title.classList.add("widget-group-title-current");
+ title.setAttribute("aria-selected", "true");
tabs[t].classList.add("widget-group-content-current");
+ tabs[t].setAttribute("aria-hidden", "false");
});
}
}
@@ -670,6 +674,7 @@ async function setupPage() {
setupLazyImages();
} finally {
pageElement.classList.add("content-ready");
+ pageElement.setAttribute("aria-busy", "false");
for (let i = 0; i < contentReadyCallbacks.length; i++) {
contentReadyCallbacks[i]();
diff --git a/internal/glance/static/main.css b/internal/glance/static/main.css
index a271d4a..c9c3c17 100644
--- a/internal/glance/static/main.css
+++ b/internal/glance/static/main.css
@@ -110,7 +110,7 @@
.visited-indicator:not(.text-truncate)::after,
.visited-indicator.text-truncate::before,
.bookmarks-link:not(.bookmarks-link-no-arrow)::after {
- content: '↗';
+ content: '↗' / "";
margin-left: 0.5em;
display: inline-block;
position: relative;
@@ -189,7 +189,7 @@
}
.expand-toggle-button-icon::before {
- content: '';
+ content: '' / "";
font-size: 0.8rem;
transform: rotate(90deg);
line-height: 1;
@@ -341,6 +341,19 @@ html, body, .body-content {
height: 100%;
}
+h1, h2, h3, h4, h5 {
+ font: inherit;
+}
+
+.visually-hidden {
+ clip-path: inset(50%);
+ height: 1px;
+ overflow: hidden;
+ position: absolute;
+ white-space: nowrap;
+ width: 1px;
+}
+
a {
text-decoration: none;
color: inherit;
@@ -563,7 +576,7 @@ kbd:active {
}
.summary::after {
- content: "◀";
+ content: "◀" / "";
font-size: 1.2em;
position: absolute;
top: 0;
@@ -822,7 +835,7 @@ details[open] .summary::after {
}
.list-horizontal-text > *:not(:last-child)::after {
- content: '•';
+ content: '•' / "";
color: var(--color-text-subdue);
margin: 0 0.4rem;
position: relative;
diff --git a/internal/glance/templates/dns-stats.html b/internal/glance/templates/dns-stats.html
index 8128edf..feb90f9 100644
--- a/internal/glance/templates/dns-stats.html
+++ b/internal/glance/templates/dns-stats.html
@@ -76,7 +76,7 @@