npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

react-a11y-toolkit

v1.0.0

Published

A reusable React accessibility toolbar with text-to-speech, voice navigation, font scaling, high contrast, reduced motion, and color vision deficiency simulation.

Readme

Accessibility Toolkit

A reusable React accessibility toolbar with text-to-speech, voice navigation, font scaling, high contrast, reduced motion, and color vision deficiency simulation.

Installation

npm install @anthropic-test/accessibility-toolkit

Peer Dependencies

npm install react react-dom @mui/material @mui/icons-material @emotion/react @emotion/styled

Quick Start

import { AccessibilityToolbar, SkipToContent } from '@anthropic-test/accessibility-toolkit';
import '@anthropic-test/accessibility-toolkit/styles.css';

function App() {
    const [theme, setTheme] = useState('light');

    return (
        <>
            <SkipToContent />
            <div id="main-content">
                {/* Your app content */}
            </div>
            <AccessibilityToolbar
                themeMode={theme}
                onThemeToggle={setTheme}
            />
        </>
    );
}

Components

AccessibilityToolbar

The main toolbar component. All features are enabled by default.

<AccessibilityToolbar
    // Theme
    themeMode="light"                    // 'light' | 'dark'
    onThemeToggle={(mode) => {}}         // Called with new mode

    // Feature flags — disable what you don't need
    features={{
        darkMode: true,
        textToSpeech: true,
        voiceNavigation: true,
        fontScaling: true,
        highContrast: true,
        reducedMotion: true,
        colorVision: true,
    }}

    // Voice navigation
    voiceCommands={[
        { phrases: ['go home', 'dashboard'], route: '/home' },
        { phrases: ['settings'], route: '/settings' },
    ]}
    navigateFn={navigate}                // e.g. react-router's useNavigate()
    voiceLang="en-IN"                    // Speech recognition language

    // Text-to-speech
    ttsLang="en-IN"                      // TTS language
    contentElementId="main-content"      // Element ID for "Read page"

    // Customization
    fabColor="#2B2E8C"                   // FAB button color
    position={{ bottom: 80, right: 20 }} // Toolbar position
/>

SkipToContent

A keyboard-accessible skip link for screen reader users.

<SkipToContent
    targetId="main-content"              // ID of the main content element
    label="Skip to main content"         // Link text
    bgColor="#2B2E8C"                    // Focus background color
/>

Hooks

All hooks can be used independently without the toolbar.

useAccessibility

Font scaling, high contrast, reduced motion, and color vision preferences. Persists to localStorage.

import { useAccessibility } from '@anthropic-test/accessibility-toolkit';

const {
    fontSize,              // Current font size percentage (80-150)
    highContrast,          // boolean
    reducedMotion,         // boolean
    colorVisionMode,       // 'normal' | 'protanopia' | 'deuteranopia' | 'tritanopia' | 'achromatopsia'
    increaseFontSize,
    decreaseFontSize,
    resetFontSize,
    toggleHighContrast,
    toggleReducedMotion,
    setColorVisionMode,
    cycleColorVisionMode,
    colorVisionModes,      // Array of available modes
} = useAccessibility();

useTextToSpeech

Web Speech API wrapper for text-to-speech.

import { useTextToSpeech } from '@anthropic-test/accessibility-toolkit';

const {
    speak,                 // (text, options?) => void
    speakSelectedText,     // Reads currently selected text
    speakPageContent,      // Reads main content area
    stop,
    pause,
    resume,
    isSpeaking,
    isPaused,
    isSupported,
    hoverToRead,           // boolean
    toggleHoverToRead,
} = useTextToSpeech({ contentElementId: 'main-content', lang: 'en-IN' });

useVoiceNavigation

Speech recognition for voice-controlled navigation.

import { useVoiceNavigation } from '@anthropic-test/accessibility-toolkit';

const {
    isListening,
    isSupported,
    transcript,
    feedback,
    toggleListening,
    startListening,
    stopListening,
    availableCommands,
} = useVoiceNavigation({
    commands: [
        { phrases: ['go home', 'dashboard'], route: '/home' },
    ],
    navigateFn: navigate,
    lang: 'en-IN',
});

CSS

Import the required CSS for high contrast, reduced motion, and color vision filters:

import '@anthropic-test/accessibility-toolkit/styles.css';

Or include it in your HTML:

<link rel="stylesheet" href="node_modules/@anthropic-test/accessibility-toolkit/dist/styles.css" />

Font Scaling

The font scaling feature changes document.documentElement.style.fontSize. This only affects rem-based font sizes. Ensure your app uses rem units for font sizes to benefit from this feature.

Browser Support

  • Text-to-Speech: Chrome, Edge, Safari, Firefox
  • Voice Navigation: Chrome, Edge (uses Web Speech Recognition API)
  • All other features: All modern browsers

License

MIT