@make-use-of/focus-visible
v0.1.0
Published
Focus-visible library for accessible focus indicators.
Maintainers
Readme
@make-use-of/focus-visible
Lightweight, dependency-free focus-visible polyfill for accessible focus indicators.
Install
npm install @make-use-of/focus-visibleQuick start
import '@make-use-of/focus-visible';
// Auto-initializes on import. Add CSS:.js-focus-visible :focus:not(.focus-visible) {
outline: none;
}
.focus-visible {
outline: 2px solid #4A90E2;
outline-offset: 2px;
}API
- applyFocusVisible(scope?, options?): void — manually apply polyfill to a document or shadow root.
scope(optional): Document, DocumentFragment, or ShadowRoot. Defaults todocument.options.className(optional): Custom class name instead of'focus-visible'.
import { applyFocusVisible } from '@make-use-of/focus-visible';
// Apply to shadow root
const shadowRoot = element.attachShadow({ mode: 'open' });
applyFocusVisible(shadowRoot);
// Use custom class name
applyFocusVisible(document, { className: 'keyboard-focus' });Notes:
- Shows focus ring for keyboard navigation, hides for mouse/touch clicks.
- Always shows focus for text inputs (input, textarea, contentEditable).
- Adds
.js-focus-visibleclass to document root for CSS targeting. - Works with shadow DOM.
