Focus Navigator is a lightweight, accessible utility that enhances keyboard navigation within a container. It ensures focus stays within a defined area (focus trap) and supports seamless keyboard interactions, making your front-end applications more accessible and user-friendly.
🔒 Focus Trap: Keeps keyboard focus within a specific container.
⌨️ Keyboard Navigation: Supports Tab and Shift+Tab navigation for cycling through focusable elements.
🌟 Accessibility-First: Built to improve web accessibility (A11Y) compliance.
🚀 Lightweight: Minimal dependencies for easy integration.
To install Focus Navigator, use npm:
npm install focus-navigator
Or, if you're using Yarn:
yarn add focus-navigator
Here’s how you can use Focus Navigator in your project:
import { focusNavigator } from 'focus-navigator';
// Select the container you want to trap focus within
const container = document.getElementById('container');
// Initialize Focus Navigator
focusNavigator(container);
<div id="container">
<button>Button 1</button>
<button>Button 2</button>
<a href="#">Link</a>
</div>
focusNavigator(container: HTMLElement): void
Initializes the focus navigator within a container.
- container (HTMLElement): The DOM element that acts as the container for focus trapping.
- void
- An error if no valid container is provided.
Focus Navigator uses best practices to ensure accessible keyboard navigation. However, it’s important to:
- Ensure all focusable elements have a proper tabindex attribute.
- Use semantic HTML for better compatibility.
Contributions are welcome! If you’d like to improve Focus Navigator, feel free to:
- Fork this repository.
- Submit a pull request with your changes.
-
Build: Compile TypeScript to JavaScript:
npm run build
-
Test: Run unit tests:
npm test
See the CHANGELOG.md file for details on changes in each version.
This project is licensed under the MIT License. See the LICENSE.md file for details.
If you have any questions or feature requests, feel free to create an issue on the GitHub repository or contact the maintainer at sajithwarnasooriya@gmail.com.