openvibers/openvibe.shared Commits
v1.5.1: touch and keyboard feedback in the shared chrome: the navbar, dropdowns, launcher, drawer and footer turn off the browser's blue tap highlight, press slightly (scale) and give keyboard focus one theme-accent ring; zero-specificity :where() rules, reduced motion dims instead
Changes
@@@ -4,6 +4,15 @@ All notable changes to `openvibe-shared`. Versions follow [semver](https://semvebreaking change to any exported module, browser global or served file name is a new major.A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).++## 1.5.1 — 2026-09-23++++Touch and keyboard feedback in the shared chrome (owner feedback: phones flashed a theme-blind blue++box over anything tapped). The navbar, its dropdowns, the launcher, the drawer and the footer turn++off `-webkit-tap-highlight-color`, show a slight press (`scale`, which composes with existing++transforms) and give keyboard focus one ring in the theme accent. Rules are wrapped in `:where()`++so they carry zero specificity: the chrome's own `:focus-visible` rules and host pages still win.++With reduced motion the press is a brief dim instead of a shrink.++## 1.5.0 — 2026-09-23Roadmap Track R (D42–D46, ADR-016): release manifests with components, open tabs updated in place,@@@ -342,7 +342,11 @@.ovf-legal-inline{justify-content:center}.ovf-account{flex-direction:column;align-items:flex-start}}--@media (prefers-reduced-motion:reduce){.ovf-account{animation:none}.ovf-col a:hover,.ovf-social a:hover,.ovf-account-links a:hover{transform:none}}`;++@media (prefers-reduced-motion:reduce){.ovf-account{animation:none}.ovf-col a:hover,.ovf-social a:hover,.ovf-account-links a:hover{transform:none}}++.ovf{-webkit-tap-highlight-color:transparent}++:where(.ovf) :where(a,button):active{scale:.97}++:where(.ovf) :where(a,button):focus-visible{outline:2px solid var(--accent-light,var(--accent,#3b82f6));outline-offset:2px;border-radius:4px}++@media (prefers-reduced-motion:reduce){:where(.ovf) :where(a,button):active{scale:none;opacity:.82}}`;function injectCSS() {if (typeof document === 'undefined' || document.getElementById('ovf-css')) return;@@@ -294,6 +294,20 @@.openvibe-navbar-links { display: none; }.openvibe-navbar .openvibe-network-badge { display: none; }}++++ /* Touch and keyboard feedback. Phones flash a square, theme-blind blue box over anything++ tapped (-webkit-tap-highlight-color); the chrome turns it off and shows a slight press++ instead, and keyboard focus gets one ring in the theme accent. :where() keeps it at zero++ specificity, so the chrome's own :focus-visible rules and a host page's rules still win.++ \`scale\` is its own property, so it composes with any transform already in use. */++ .openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer { -webkit-tap-highlight-color: transparent; }++ :where(.openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer) :where(a, button, [role="button"]):not(:disabled):active { scale: .96; }++ :where(.openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer) :where(a, button, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {++ outline: 2px solid var(--accent-light, var(--accent, #3b82f6)); outline-offset: 2px;++ }++ @media (prefers-reduced-motion: reduce) {++ :where(.openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer) :where(a, button, [role="button"]):not(:disabled):active { scale: none; opacity: .82; }++ }`;document.head.appendChild(s);}@@@ -1,12 +1,12 @@{"name": "openvibe-shared",-- "version": "1.5.0",++ "version": "1.5.1","lockfileVersion": 3,"requires": true,"packages": {"": {"name": "openvibe-shared",-- "version": "1.5.0",++ "version": "1.5.1","license": "MIT","dependencies": {"jsonwebtoken": "^9.0.0"@@@ -1,6 +1,6 @@{"name": "openvibe-shared",-- "version": "1.5.0",++ "version": "1.5.1","description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site","main": "index.js","exports": {
@@ -4,6 +4,15 @@ All notable changes to `openvibe-shared`. Versions follow [semver](https://semve
@@ -4,6 +4,15 @@ All notable changes to `openvibe-shared`. Versions follow [semver](https://semve
breaking change to any exported module, browser global or served file name is a new major.
breaking change to any exported module, browser global or served file name is a new major.
A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).
A release is the git tag `vX.Y.Z`; consumers pin the tag's tarball (see README).
+## 1.5.1 — 2026-09-23
+
+Touch and keyboard feedback in the shared chrome (owner feedback: phones flashed a theme-blind blue
+box over anything tapped). The navbar, its dropdowns, the launcher, the drawer and the footer turn
+off `-webkit-tap-highlight-color`, show a slight press (`scale`, which composes with existing
+transforms) and give keyboard focus one ring in the theme accent. Rules are wrapped in `:where()`
+so they carry zero specificity: the chrome's own `:focus-visible` rules and host pages still win.
+With reduced motion the press is a brief dim instead of a shrink.
+
## 1.5.0 — 2026-09-23
## 1.5.0 — 2026-09-23
Roadmap Track R (D42–D46, ADR-016): release manifests with components, open tabs updated in place,
Roadmap Track R (D42–D46, ADR-016): release manifests with components, open tabs updated in place,
@@ -342,7 +342,11 @@
@@ -342,7 +342,11 @@
.ovf-legal-inline{justify-content:center}
.ovf-legal-inline{justify-content:center}
.ovf-account{flex-direction:column;align-items:flex-start}
.ovf-account{flex-direction:column;align-items:flex-start}
}
}
-@media (prefers-reduced-motion:reduce){.ovf-account{animation:none}.ovf-col a:hover,.ovf-social a:hover,.ovf-account-links a:hover{transform:none}}`;
+@media (prefers-reduced-motion:reduce){.ovf-account{animation:none}.ovf-col a:hover,.ovf-social a:hover,.ovf-account-links a:hover{transform:none}}
+.ovf{-webkit-tap-highlight-color:transparent}
+:where(.ovf) :where(a,button):active{scale:.97}
+:where(.ovf) :where(a,button):focus-visible{outline:2px solid var(--accent-light,var(--accent,#3b82f6));outline-offset:2px;border-radius:4px}
+@media (prefers-reduced-motion:reduce){:where(.ovf) :where(a,button):active{scale:none;opacity:.82}}`;
function injectCSS() {
function injectCSS() {
if (typeof document === 'undefined' || document.getElementById('ovf-css')) return;
if (typeof document === 'undefined' || document.getElementById('ovf-css')) return;
@@ -294,6 +294,20 @@
@@ -294,6 +294,20 @@
.openvibe-navbar-links { display: none; }
.openvibe-navbar-links { display: none; }
.openvibe-navbar .openvibe-network-badge { display: none; }
.openvibe-navbar .openvibe-network-badge { display: none; }
}
}
+
+ /* Touch and keyboard feedback. Phones flash a square, theme-blind blue box over anything
+ tapped (-webkit-tap-highlight-color); the chrome turns it off and shows a slight press
+ instead, and keyboard focus gets one ring in the theme accent. :where() keeps it at zero
+ specificity, so the chrome's own :focus-visible rules and a host page's rules still win.
+ \`scale\` is its own property, so it composes with any transform already in use. */
+ .openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer { -webkit-tap-highlight-color: transparent; }
+ :where(.openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer) :where(a, button, [role="button"]):not(:disabled):active { scale: .96; }
+ :where(.openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer) :where(a, button, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {
+ outline: 2px solid var(--accent-light, var(--accent, #3b82f6)); outline-offset: 2px;
+ }
+ @media (prefers-reduced-motion: reduce) {
+ :where(.openvibe-navbar, .openvibe-navbar-dropdown, .ovnav-launcher, .ovnav-drawer) :where(a, button, [role="button"]):not(:disabled):active { scale: none; opacity: .82; }
+ }
`;
`;
document.head.appendChild(s);
document.head.appendChild(s);
}
}
@@ -1,12 +1,12 @@
@@ -1,12 +1,12 @@
{
{
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "1.5.0",
+ "version": "1.5.1",
"lockfileVersion": 3,
"lockfileVersion": 3,
"requires": true,
"requires": true,
"packages": {
"packages": {
"": {
"": {
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "1.5.0",
+ "version": "1.5.1",
"license": "MIT",
"license": "MIT",
"dependencies": {
"dependencies": {
"jsonwebtoken": "^9.0.0"
"jsonwebtoken": "^9.0.0"
@@ -1,6 +1,6 @@
@@ -1,6 +1,6 @@
{
{
"name": "openvibe-shared",
"name": "openvibe-shared",
- "version": "1.5.0",
+ "version": "1.5.1",
"description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site",
"description": "Shared navbar, footer, themes, icons, legal pages, SEO, auth and analytics for every OpenVibe site",
"main": "index.js",
"main": "index.js",
"exports": {
"exports": {