ngp-accessibility 1.0.6 → 1.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -15
- package/dist/AccessibilityContext.d.ts +2 -2
- package/dist/AccessibilityToolbar.d.ts +0 -1
- package/dist/index.esm.js +16 -66
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +16 -66
- package/dist/index.js.map +1 -1
- package/dist/styles.css +40 -0
- package/dist/translations.d.ts +3 -3
- package/package.json +3 -4
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/translations.ts","../src/AccessibilityContext.tsx","../src/AccessibilityToolbar.tsx","../src/AccessibilityDropdown.tsx","../src/T.tsx"],"sourcesContent":["export const translations = {\n en: {\n language: \"Language\",\n increaseText: \"Increase Text\",\n decreaseText: \"Decrease Text\",\n textMagnifier: \"Text Magnifier\",\n highContrast: \"High Contrast\",\n negativeContrast: \"Negative Contrast\",\n lightBackground: \"Light Background\",\n underlineLinks: \"Underline Links\",\n highlightTitles: \"Highlight Titles\",\n readableFont: \"Readable Font\",\n pauseAnimations: \"Pause Animations\",\n readingGuide: \"Reading Guide\",\n voiceCommand: \"Voice Command\",\n readAloud: \"Read Aloud\",\n colorBlindMode: \"Color Blind Mode\",\n focusIndicator: \"Focus Indicator\",\n },\n tl: {\n language: \"Wika\",\n increaseText: \"Palakihin ang Teksto\",\n decreaseText: \"Paliitin ang Teksto\",\n textMagnifier: \"Text Magnifier\",\n highContrast: \"Mataas na Contrast\",\n negativeContrast: \"Negatibong Contrast\",\n lightBackground: \"Maliwanag na Background\",\n underlineLinks: \"May Guhit na Links\",\n highlightTitles: \"I-highlight ang Mga Pamagat\",\n readableFont: \"Madaling Basahin na Font\",\n pauseAnimations: \"I-pause ang mga Animation\",\n readingGuide: \"Reading Guide\",\n voiceCommand: \"Voice Command\",\n readAloud: \"Basahin nang Malakas\",\n colorBlindMode: \"Color Blind Mode\",\n focusIndicator: \"Focus Indicator\",\n },\n ceb: {\n language: \"Pinulongan\",\n increaseText: \"Padak-on ang Teksto\",\n decreaseText: \"Pagamay-on ang Teksto\",\n textMagnifier: \"Text Magnifier\",\n highContrast: \"Taas nga Contrast\",\n negativeContrast: \"Negatibo nga Contrast\",\n lightBackground: \"Hayag nga Background\",\n underlineLinks: \"Linya sa Ubos sa Links\",\n highlightTitles: \"I-highlight ang mga Ulohan\",\n readableFont: \"Sayon Basahon nga Font\",\n pauseAnimations: \"Ihunong ang mga Animation\",\n readingGuide: \"Reading Guide\",\n voiceCommand: \"Voice Command\",\n readAloud: \"Basaha og Kusog\",\n colorBlindMode: \"Color Blind Mode\",\n focusIndicator: \"Focus Indicator\",\n },\n};\n\nexport type ManualLanguage = keyof typeof translations;\nexport type Language = ManualLanguage | (string & {});\nexport type TranslationKey = keyof typeof translations.en;\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n ReactNode,\n} from \"react\";\nimport {\n Language,\n ManualLanguage,\n translations,\n TranslationKey,\n} from \"./translations\";\n\nconst GOOGLE_TRANSLATE_COOKIE_NAME = \"googtrans\";\nconst GOOGLE_TRANSLATE_SOURCE_LANGUAGE = \"en\";\n\nconst getCookieDomains = () => {\n const domains = new Set<string>([window.location.hostname]);\n const hostnameParts = window.location.hostname.split(\".\");\n\n if (hostnameParts.length > 2) {\n domains.add(hostnameParts.slice(-2).join(\".\"));\n }\n\n return Array.from(domains);\n};\n\nconst setGoogleTranslateCookie = (targetLanguage: string) => {\n const cookieValue = `/${GOOGLE_TRANSLATE_SOURCE_LANGUAGE}/${targetLanguage}`;\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=${cookieValue}; path=/; SameSite=Lax`;\n\n for (const domain of getCookieDomains()) {\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=${cookieValue}; path=/; domain=${domain}; SameSite=Lax`;\n }\n};\n\nconst clearGoogleTranslateCookie = () => {\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; SameSite=Lax`;\n\n for (const domain of getCookieDomains()) {\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${domain}; SameSite=Lax`;\n }\n};\n\nconst dispatchNativeChangeEvent = (element: HTMLSelectElement) => {\n element.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\n\nconst normalizeMagnifierText = (value: string) =>\n value.replace(/\\s+/g, \" \").trim();\n\nconst magnifierSelector =\n \"p, li, button, h1, h2, h3, h4, h5, h6, [role=heading]\";\n\nconst getMagnifierElement = (target: EventTarget | null) => {\n if (!(target instanceof HTMLElement)) return null;\n if (target.closest(\".a11y-root\")) return null;\n\n const element = target.closest(magnifierSelector);\n return element instanceof HTMLElement ? element : null;\n};\n\nconst getMagnifierText = (target: EventTarget | null) => {\n const element = getMagnifierElement(target);\n if (!element) return \"\";\n\n const ariaLabel = normalizeMagnifierText(\n element.getAttribute(\"aria-label\") || \"\",\n );\n if (ariaLabel) return ariaLabel;\n\n return normalizeMagnifierText(element.innerText || element.textContent || \"\");\n};\n\nexport type ColorBlindMode =\n | \"none\"\n | \"protanopia\"\n | \"deuteranopia\"\n | \"tritanopia\";\n\ninterface AccessibilityState {\n language: Language;\n textSize: number;\n textMagnifier: boolean;\n pauseAnimations: boolean;\n readingGuide: boolean;\n highContrast: boolean;\n negativeContrast: boolean;\n lightBackground: boolean;\n underlineLinks: boolean;\n highlightTitles: boolean;\n readableFont: boolean;\n voiceEnabled: boolean;\n readAloud: boolean;\n colorBlindMode: ColorBlindMode;\n focusIndicator: boolean;\n}\n\ninterface AccessibilityContextType extends AccessibilityState {\n setLanguage: (lang: Language) => void;\n increaseText: () => void;\n decreaseText: () => void;\n toggleTextMagnifier: () => void;\n togglePauseAnimations: () => void;\n toggleReadingGuide: () => void;\n toggleHighContrast: () => void;\n toggleNegativeContrast: () => void;\n toggleLightBackground: () => void;\n toggleUnderlineLinks: () => void;\n toggleHighlightTitles: () => void;\n toggleReadableFont: () => void;\n toggleVoice: () => void;\n toggleReadAloud: () => void;\n setColorBlindMode: (mode: ColorBlindMode) => void;\n toggleFocusIndicator: () => void;\n hasManualTranslations: boolean;\n translate: (key: TranslationKey) => string;\n t: (key: string) => string;\n}\n\nconst AccessibilityContext = createContext<\n AccessibilityContextType | undefined\n>(undefined);\n\nexport interface AccessibilityProviderProps {\n children: ReactNode;\n translations?: Partial<Record<Language, Record<string, string>>>;\n googleTranslateTargetSelector?: string;\n /** @deprecated Use googleTranslateTargetSelector instead. */\n translationTargetSelector?: string;\n}\n\nexport const AccessibilityProvider: React.FC<AccessibilityProviderProps> = ({\n children,\n translations: customTranslations,\n googleTranslateTargetSelector,\n translationTargetSelector,\n}) => {\n const [state, setState] = useState<AccessibilityState>({\n language: \"en\",\n textSize: 100,\n textMagnifier: false,\n pauseAnimations: false,\n readingGuide: false,\n highContrast: false,\n negativeContrast: false,\n lightBackground: false,\n underlineLinks: false,\n highlightTitles: false,\n readableFont: false,\n voiceEnabled: false,\n readAloud: false,\n colorBlindMode: \"none\",\n focusIndicator: false,\n });\n\n const allTranslations: Partial<Record<Language, Record<string, string>>> =\n customTranslations || translations;\n\n const defaultUiTranslations = translations.en;\n const manualTranslationsForLanguage =\n translations[state.language as ManualLanguage];\n const hasManualTranslations = Boolean(manualTranslationsForLanguage);\n\n const resolvedTranslationTargetSelector =\n googleTranslateTargetSelector ?? translationTargetSelector ?? \"main\";\n\n useEffect(() => {\n const target = document.querySelector<HTMLElement>(\n resolvedTranslationTargetSelector,\n );\n if (!target) {\n console.warn(\n `[NGP Accessibility] Google translation target selector \"${resolvedTranslationTargetSelector}\" did not match any element. Falling back to page-wide translation behavior.`,\n );\n return;\n }\n\n const markedElements = new Set<HTMLElement>();\n let current: HTMLElement | null = target;\n\n while (current && current !== document.body) {\n const parentElement: HTMLElement | null = current.parentElement;\n if (!parentElement) break;\n\n for (const sibling of Array.from(parentElement.children)) {\n if (sibling === current || !(sibling instanceof HTMLElement)) continue;\n if (sibling.id === \"a11y-google-translate-element\") continue;\n\n sibling.classList.add(\"notranslate\");\n sibling.setAttribute(\"translate\", \"no\");\n sibling.dataset.a11yTranslationScoped = \"true\";\n markedElements.add(sibling);\n }\n\n current = parentElement;\n }\n\n return () => {\n for (const element of markedElements) {\n if (element.dataset.a11yTranslationScoped !== \"true\") continue;\n element.classList.remove(\"notranslate\");\n element.removeAttribute(\"translate\");\n delete element.dataset.a11yTranslationScoped;\n }\n };\n }, [resolvedTranslationTargetSelector]);\n\n useEffect(() => {\n const root = document.documentElement;\n root.style.fontSize = `${state.textSize}%`;\n\n root.classList.toggle(\"high-contrast\", state.highContrast);\n root.classList.toggle(\"negative-contrast\", state.negativeContrast);\n root.classList.toggle(\"light-background\", state.lightBackground);\n root.classList.toggle(\"underline-links\", state.underlineLinks);\n root.classList.toggle(\"highlight-titles\", state.highlightTitles);\n root.classList.toggle(\"readable-font\", state.readableFont);\n root.classList.toggle(\"pause-animations\", state.pauseAnimations);\n root.classList.toggle(\"focus-indicator\", state.focusIndicator);\n\n const body = document.body;\n if (state.colorBlindMode !== \"none\") {\n body.style.filter = `url(#a11y-${state.colorBlindMode})`;\n } else {\n body.style.filter = \"\";\n }\n }, [state]);\n\n useEffect(() => {\n const svgId = \"a11y-colorblind-filters\";\n if (document.getElementById(svgId)) return;\n\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.id = svgId;\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.style.cssText = \"position:absolute;width:0;height:0;overflow:hidden;\";\n svg.innerHTML = `\n <defs>\n <filter id=\"a11y-protanopia\">\n <feColorMatrix type=\"matrix\" values=\"\n 0.567 0.433 0 0 0\n 0.558 0.442 0 0 0\n 0 0.242 0.758 0 0\n 0 0 0 1 0\"/>\n </filter>\n <filter id=\"a11y-deuteranopia\">\n <feColorMatrix type=\"matrix\" values=\"\n 0.625 0.375 0 0 0\n 0.7 0.3 0 0 0\n 0 0.3 0.7 0 0\n 0 0 0 1 0\"/>\n </filter>\n <filter id=\"a11y-tritanopia\">\n <feColorMatrix type=\"matrix\" values=\"\n 0.95 0.05 0 0 0\n 0 0.433 0.567 0 0\n 0 0.475 0.525 0 0\n 0 0 0 1 0\"/>\n </filter>\n </defs>\n `;\n document.body.prepend(svg);\n\n return () => {\n document.getElementById(svgId)?.remove();\n };\n }, []);\n\n useEffect(() => {\n if (!state.readAloud || !(\"speechSynthesis\" in window)) return;\n\n const readableSelector =\n \"p, li, button, a, h1, h2, h3, h4, h5, h6, label, td, th, [role='button'], [role='heading'], [role='link']\";\n\n const speak = (text: string) => {\n window.speechSynthesis.cancel();\n const utterance = new SpeechSynthesisUtterance(text);\n utterance.lang =\n state.language === \"tl\"\n ? \"tl-PH\"\n : state.language === \"ceb\"\n ? \"fil-PH\"\n : \"en-US\";\n utterance.rate = 0.95;\n window.speechSynthesis.speak(utterance);\n };\n\n const getReadableText = (el: HTMLElement): string =>\n normalizeMagnifierText(\n el.getAttribute(\"aria-label\") ||\n el.getAttribute(\"placeholder\") ||\n el.getAttribute(\"title\") ||\n el.innerText ||\n el.textContent ||\n \"\",\n );\n\n const handleMouseOver = (event: MouseEvent) => {\n const target = event.target as HTMLElement | null;\n if (!target) return;\n const el = target.closest(readableSelector);\n if (!el || el.closest(\".a11y-root\")) return;\n const text = getReadableText(el as HTMLElement);\n if (text) speak(text);\n };\n\n const handleFocus = (event: FocusEvent) => {\n const el = event.target as HTMLElement | null;\n if (!el || el.closest(\".a11y-root\")) return;\n const text = getReadableText(el);\n if (text) speak(text);\n };\n\n document.addEventListener(\"mouseover\", handleMouseOver, true);\n document.addEventListener(\"focusin\", handleFocus, true);\n\n return () => {\n document.removeEventListener(\"mouseover\", handleMouseOver, true);\n document.removeEventListener(\"focusin\", handleFocus, true);\n window.speechSynthesis.cancel();\n };\n }, [state.readAloud, state.language]);\n\n useEffect(() => {\n if (!state.readingGuide) return;\n\n const guide = document.createElement(\"div\");\n guide.className = \"a11y-reading-guide\";\n guide.setAttribute(\"aria-hidden\", \"true\");\n guide.innerHTML = `\n <div class=\"a11y-reading-guide-top\"></div>\n <div class=\"a11y-reading-guide-focus\"></div>\n <div class=\"a11y-reading-guide-line\"></div>\n <div class=\"a11y-reading-guide-bottom\"></div>\n `;\n document.body.appendChild(guide);\n\n const topMask = guide.querySelector(\n \".a11y-reading-guide-top\",\n ) as HTMLDivElement;\n const focusBand = guide.querySelector(\n \".a11y-reading-guide-focus\",\n ) as HTMLDivElement;\n const focusLine = guide.querySelector(\n \".a11y-reading-guide-line\",\n ) as HTMLDivElement;\n const bottomMask = guide.querySelector(\n \".a11y-reading-guide-bottom\",\n ) as HTMLDivElement;\n\n const bandHeight = 72;\n const halfBandHeight = bandHeight / 2;\n\n const updateGuide = (clientY: number) => {\n const safeY = Math.min(\n Math.max(halfBandHeight + 12, clientY),\n window.innerHeight - halfBandHeight - 12,\n );\n const top = Math.max(0, safeY - halfBandHeight);\n const bottom = Math.min(window.innerHeight, safeY + halfBandHeight);\n\n topMask.style.height = `${top}px`;\n focusBand.style.top = `${top}px`;\n focusBand.style.height = `${bottom - top}px`;\n focusLine.style.top = `${safeY}px`;\n bottomMask.style.top = `${bottom}px`;\n bottomMask.style.height = `${Math.max(0, window.innerHeight - bottom)}px`;\n };\n\n const resetGuide = () => updateGuide(window.innerHeight / 2);\n\n const handleMouseMove = (event: MouseEvent) => updateGuide(event.clientY);\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) updateGuide(touch.clientY);\n };\n const handleTouchMove = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) updateGuide(touch.clientY);\n };\n\n resetGuide();\n document.addEventListener(\"mousemove\", handleMouseMove, true);\n document.addEventListener(\"touchstart\", handleTouchStart, true);\n document.addEventListener(\"touchmove\", handleTouchMove, true);\n window.addEventListener(\"resize\", resetGuide);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\n document.removeEventListener(\"touchstart\", handleTouchStart, true);\n document.removeEventListener(\"touchmove\", handleTouchMove, true);\n window.removeEventListener(\"resize\", resetGuide);\n guide.remove();\n };\n }, [state.readingGuide]);\n\n useEffect(() => {\n if (!state.textMagnifier) return;\n\n const tooltip = document.createElement(\"div\");\n tooltip.className = \"a11y-text-magnifier-tooltip\";\n tooltip.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(tooltip);\n\n const hideTooltip = () => {\n tooltip.removeAttribute(\"data-visible\");\n tooltip.textContent = \"\";\n };\n\n const showTooltip = (text: string) => {\n tooltip.textContent = text;\n tooltip.setAttribute(\"data-visible\", \"true\");\n };\n\n const updateTooltipPosition = (clientX: number, clientY: number) => {\n const tooltipWidth = tooltip.offsetWidth || 320;\n const tooltipHeight = tooltip.offsetHeight || 56;\n const left = Math.min(\n Math.max(12, clientX + 18),\n window.innerWidth - tooltipWidth - 12,\n );\n const top =\n clientY + tooltipHeight + 18 > window.innerHeight\n ? Math.max(12, clientY - tooltipHeight - 18)\n : clientY + 18;\n\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n };\n\n const handleMouseMove = (event: MouseEvent) => {\n const text = getMagnifierText(event.target);\n if (!text) {\n hideTooltip();\n return;\n }\n\n showTooltip(text);\n updateTooltipPosition(event.clientX, event.clientY);\n };\n\n let touchTimer: number | null = null;\n let activeTouchId: number | null = null;\n let activeText = \"\";\n let pressPoint: { x: number; y: number } | null = null;\n\n const clearTouchTimer = () => {\n if (touchTimer !== null) {\n window.clearTimeout(touchTimer);\n touchTimer = null;\n }\n };\n\n const resetTouchState = () => {\n clearTouchTimer();\n activeTouchId = null;\n activeText = \"\";\n pressPoint = null;\n hideTooltip();\n };\n\n const getTrackedTouch = (touches: TouchList) => {\n if (activeTouchId === null) return null;\n for (const touch of Array.from(touches)) {\n if (touch.identifier === activeTouchId) return touch;\n }\n return null;\n };\n\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n if (!touch) return;\n\n const text = getMagnifierText(event.target);\n if (!text) {\n resetTouchState();\n return;\n }\n\n clearTouchTimer();\n activeTouchId = touch.identifier;\n activeText = text;\n pressPoint = { x: touch.clientX, y: touch.clientY };\n\n touchTimer = window.setTimeout(() => {\n showTooltip(activeText);\n updateTooltipPosition(touch.clientX, touch.clientY);\n touchTimer = null;\n }, 450);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n const touch = getTrackedTouch(event.touches);\n if (!touch) return;\n\n if (!tooltip.hasAttribute(\"data-visible\")) {\n if (\n pressPoint &&\n (Math.abs(touch.clientX - pressPoint.x) > 10 ||\n Math.abs(touch.clientY - pressPoint.y) > 10)\n ) {\n resetTouchState();\n }\n return;\n }\n\n updateTooltipPosition(touch.clientX, touch.clientY);\n };\n\n const handleTouchEnd = () => resetTouchState();\n const handleTouchCancel = () => resetTouchState();\n const handlePointerLeave = () => hideTooltip();\n\n document.addEventListener(\"mousemove\", handleMouseMove, true);\n document.addEventListener(\"touchstart\", handleTouchStart, true);\n document.addEventListener(\"touchmove\", handleTouchMove, true);\n document.addEventListener(\"touchend\", handleTouchEnd, true);\n document.addEventListener(\"touchcancel\", handleTouchCancel, true);\n document.addEventListener(\"scroll\", hideTooltip, true);\n window.addEventListener(\"blur\", handlePointerLeave);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\n document.removeEventListener(\"touchstart\", handleTouchStart, true);\n document.removeEventListener(\"touchmove\", handleTouchMove, true);\n document.removeEventListener(\"touchend\", handleTouchEnd, true);\n document.removeEventListener(\"touchcancel\", handleTouchCancel, true);\n document.removeEventListener(\"scroll\", hideTooltip, true);\n window.removeEventListener(\"blur\", handlePointerLeave);\n clearTouchTimer();\n tooltip.remove();\n };\n }, [state.textMagnifier]);\n\n useEffect(() => {\n if (\n !state.voiceEnabled ||\n !(\"webkitSpeechRecognition\" in window || \"SpeechRecognition\" in window)\n )\n return;\n\n const SpeechRecognition =\n (window as any).SpeechRecognition ||\n (window as any).webkitSpeechRecognition;\n const recognition = new SpeechRecognition();\n recognition.continuous = true;\n recognition.lang =\n state.language === \"tl\"\n ? \"tl-PH\"\n : state.language === \"ceb\"\n ? \"ceb-PH\"\n : \"en-US\";\n\n recognition.onresult = (event: any) => {\n const transcript =\n event.results[event.results.length - 1][0].transcript.toLowerCase();\n\n if (\n transcript.includes(\"increase text\") ||\n transcript.includes(\"palakihin\")\n )\n increaseText();\n if (\n transcript.includes(\"decrease text\") ||\n transcript.includes(\"paliitin\")\n )\n decreaseText();\n if (transcript.includes(\"high contrast\") || transcript.includes(\"mataas\"))\n toggleHighContrast();\n if (\n transcript.includes(\"negative contrast\") ||\n transcript.includes(\"negatibo\")\n )\n toggleNegativeContrast();\n if (\n transcript.includes(\"light background\") ||\n transcript.includes(\"maliwanag\")\n )\n toggleLightBackground();\n if (transcript.includes(\"underline\") || transcript.includes(\"guhit\"))\n toggleUnderlineLinks();\n if (\n transcript.includes(\"highlight titles\") ||\n transcript.includes(\"title highlight\")\n )\n toggleHighlightTitles();\n if (\n transcript.includes(\"pause animations\") ||\n transcript.includes(\"stop animations\")\n )\n togglePauseAnimations();\n if (\n transcript.includes(\"reading guide\") ||\n transcript.includes(\"reading line\")\n )\n toggleReadingGuide();\n if (\n transcript.includes(\"readable font\") ||\n transcript.includes(\"madaling\")\n )\n toggleReadableFont();\n };\n\n recognition.start();\n return () => recognition.stop();\n }, [state.voiceEnabled, state.language]);\n\n const setLanguage = (lang: Language) =>\n setState((s) => ({ ...s, language: lang }));\n const increaseText = () =>\n setState((s) => ({ ...s, textSize: Math.min(s.textSize + 10, 200) }));\n const decreaseText = () =>\n setState((s) => ({ ...s, textSize: Math.max(s.textSize - 10, 80) }));\n const toggleTextMagnifier = () =>\n setState((s) => ({ ...s, textMagnifier: !s.textMagnifier }));\n const togglePauseAnimations = () =>\n setState((s) => ({ ...s, pauseAnimations: !s.pauseAnimations }));\n const toggleReadingGuide = () =>\n setState((s) => ({ ...s, readingGuide: !s.readingGuide }));\n const toggleHighContrast = () =>\n setState((s) => ({\n ...s,\n highContrast: !s.highContrast,\n negativeContrast: false,\n }));\n const toggleNegativeContrast = () =>\n setState((s) => ({\n ...s,\n negativeContrast: !s.negativeContrast,\n highContrast: false,\n }));\n const toggleLightBackground = () =>\n setState((s) => ({ ...s, lightBackground: !s.lightBackground }));\n const toggleUnderlineLinks = () =>\n setState((s) => ({ ...s, underlineLinks: !s.underlineLinks }));\n const toggleHighlightTitles = () =>\n setState((s) => ({ ...s, highlightTitles: !s.highlightTitles }));\n const toggleReadableFont = () =>\n setState((s) => ({ ...s, readableFont: !s.readableFont }));\n const toggleVoice = () =>\n setState((s) => ({ ...s, voiceEnabled: !s.voiceEnabled }));\n const toggleReadAloud = () =>\n setState((s) => ({ ...s, readAloud: !s.readAloud }));\n const setColorBlindMode = (mode: ColorBlindMode) =>\n setState((s) => ({ ...s, colorBlindMode: mode }));\n const toggleFocusIndicator = () =>\n setState((s) => ({ ...s, focusIndicator: !s.focusIndicator }));\n // Google Translate: auto-translate page content when language changes\n useEffect(() => {\n const GTRANSLATE_SCRIPT_ID = \"a11y-google-translate-script\";\n const GTRANSLATE_CONTAINER_ID = \"a11y-google-translate-element\";\n\n const loadGoogleTranslateScript = () => {\n if (document.getElementById(GTRANSLATE_SCRIPT_ID)) return;\n\n // Create hidden container for the widget\n const container = document.createElement(\"div\");\n container.id = GTRANSLATE_CONTAINER_ID;\n container.style.display = \"none\";\n document.body.appendChild(container);\n\n // Define the init callback\n (window as any).googleTranslateElementInit = () => {\n new (window as any).google.translate.TranslateElement(\n {\n pageLanguage: \"en\",\n autoDisplay: false,\n },\n GTRANSLATE_CONTAINER_ID,\n );\n };\n\n const script = document.createElement(\"script\");\n script.id = GTRANSLATE_SCRIPT_ID;\n script.src =\n \"//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit\";\n script.async = true;\n document.body.appendChild(script);\n };\n\n const triggerTranslation = (langCode: string) => {\n setGoogleTranslateCookie(langCode);\n\n const select =\n document.querySelector<HTMLSelectElement>(\".goog-te-combo\");\n if (select) {\n select.value = langCode;\n dispatchNativeChangeEvent(select);\n }\n };\n\n const resetTranslation = () => {\n const select =\n document.querySelector<HTMLSelectElement>(\".goog-te-combo\");\n if (select) {\n select.value = GOOGLE_TRANSLATE_SOURCE_LANGUAGE;\n dispatchNativeChangeEvent(select);\n }\n\n clearGoogleTranslateCookie();\n };\n\n const langMap: Record<string, string> = {\n en: GOOGLE_TRANSLATE_SOURCE_LANGUAGE,\n tl: \"tl\",\n ceb: \"ceb\",\n ja: \"ja\",\n es: \"es\",\n fr: \"fr\",\n de: \"de\",\n zh: \"zh-CN\",\n ar: \"ar\",\n };\n\n const googleLang = langMap[state.language] || state.language;\n\n if (googleLang === GOOGLE_TRANSLATE_SOURCE_LANGUAGE) {\n resetTranslation();\n return;\n }\n\n loadGoogleTranslateScript();\n setGoogleTranslateCookie(googleLang);\n\n // Wait for Google Translate widget to be ready, then trigger\n const interval = window.setInterval(() => {\n const select =\n document.querySelector<HTMLSelectElement>(\".goog-te-combo\");\n if (select) {\n window.clearInterval(interval);\n triggerTranslation(googleLang);\n }\n }, 300);\n\n return () => window.clearInterval(interval);\n }, [state.language]);\n\n const translate = (key: TranslationKey) =>\n manualTranslationsForLanguage?.[key] || defaultUiTranslations[key];\n const t = (key: string) =>\n allTranslations[state.language]?.[key] || allTranslations.en?.[key] || key;\n\n return (\n <AccessibilityContext.Provider\n value={{\n ...state,\n setLanguage,\n increaseText,\n decreaseText,\n toggleTextMagnifier,\n togglePauseAnimations,\n toggleReadingGuide,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleUnderlineLinks,\n toggleHighlightTitles,\n toggleReadableFont,\n toggleVoice,\n toggleReadAloud,\n setColorBlindMode,\n toggleFocusIndicator,\n hasManualTranslations,\n translate,\n t,\n }}\n >\n {children}\n </AccessibilityContext.Provider>\n );\n};\n\nexport const useAccessibility = () => {\n const context = useContext(AccessibilityContext);\n if (!context)\n throw new Error(\n \"useAccessibility must be used within AccessibilityProvider\",\n );\n return context;\n};\n","import React from \"react\";\nimport { useAccessibility } from \"./AccessibilityContext\";\nimport type { ColorBlindMode } from \"./AccessibilityContext\";\n\nexport interface AccessibilityToolbarClasses {\n root?: string;\n select?: string;\n button?: string;\n activeButton?: string;\n voiceButton?: string;\n}\n\nexport interface AccessibilityToolbarProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityToolbarClasses;\n}\n\nconst cn = (...parts: Array<string | false | undefined>) =>\n parts.filter(Boolean).join(\" \");\n\nexport const AccessibilityToolbar: React.FC<AccessibilityToolbarProps> = ({\n className,\n style,\n classes,\n}) => {\n const {\n language,\n setLanguage,\n increaseText,\n decreaseText,\n toggleTextMagnifier,\n togglePauseAnimations,\n toggleReadingGuide,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleUnderlineLinks,\n toggleHighlightTitles,\n toggleReadableFont,\n toggleVoice,\n toggleReadAloud,\n setColorBlindMode,\n toggleFocusIndicator,\n translate,\n textMagnifier,\n pauseAnimations,\n readingGuide,\n highContrast,\n negativeContrast,\n lightBackground,\n underlineLinks,\n highlightTitles,\n readableFont,\n voiceEnabled,\n readAloud,\n colorBlindMode,\n focusIndicator,\n } = useAccessibility();\n\n return (\n <div\n className={cn(\n \"accessibility-toolbar notranslate\",\n classes?.root,\n className,\n )}\n style={style}\n translate=\"no\"\n >\n <select\n className={cn(classes?.select)}\n value={language}\n onChange={(e) => setLanguage(e.target.value as any)}\n >\n <option value=\"en\">English</option>\n <option value=\"tl\">Tagalog</option>\n <option value=\"ceb\">Cebuano</option>\n </select>\n <button className={cn(classes?.button)} onClick={increaseText}>\n + {translate(\"increaseText\")}\n </button>\n <button className={cn(classes?.button)} onClick={decreaseText}>\n - {translate(\"decreaseText\")}\n </button>\n <button\n className={cn(\n classes?.button,\n textMagnifier && \"active\",\n textMagnifier && classes?.activeButton,\n )}\n data-active={textMagnifier}\n onClick={toggleTextMagnifier}\n >\n {translate(\"textMagnifier\")}\n </button>\n <button\n className={cn(\n classes?.button,\n highContrast && \"active\",\n highContrast && classes?.activeButton,\n )}\n data-active={highContrast}\n onClick={toggleHighContrast}\n >\n {translate(\"highContrast\")}\n </button>\n <button\n className={cn(\n classes?.button,\n negativeContrast && \"active\",\n negativeContrast && classes?.activeButton,\n )}\n data-active={negativeContrast}\n onClick={toggleNegativeContrast}\n >\n {translate(\"negativeContrast\")}\n </button>\n <button\n className={cn(\n classes?.button,\n lightBackground && \"active\",\n lightBackground && classes?.activeButton,\n )}\n data-active={lightBackground}\n onClick={toggleLightBackground}\n >\n {translate(\"lightBackground\")}\n </button>\n <button\n className={cn(\n classes?.button,\n underlineLinks && \"active\",\n underlineLinks && classes?.activeButton,\n )}\n data-active={underlineLinks}\n onClick={toggleUnderlineLinks}\n >\n {translate(\"underlineLinks\")}\n </button>\n <button\n className={cn(\n classes?.button,\n highlightTitles && \"active\",\n highlightTitles && classes?.activeButton,\n )}\n data-active={highlightTitles}\n onClick={toggleHighlightTitles}\n >\n {translate(\"highlightTitles\")}\n </button>\n <button\n className={cn(\n classes?.button,\n readableFont && \"active\",\n readableFont && classes?.activeButton,\n )}\n data-active={readableFont}\n onClick={toggleReadableFont}\n >\n {translate(\"readableFont\")}\n </button>\n <button\n className={cn(\n classes?.button,\n pauseAnimations && \"active\",\n pauseAnimations && classes?.activeButton,\n )}\n data-active={pauseAnimations}\n onClick={togglePauseAnimations}\n >\n {translate(\"pauseAnimations\")}\n </button>\n <button\n className={cn(\n classes?.button,\n readingGuide && \"active\",\n readingGuide && classes?.activeButton,\n )}\n data-active={readingGuide}\n onClick={toggleReadingGuide}\n >\n {translate(\"readingGuide\")}\n </button>\n <button\n className={cn(\n classes?.button,\n classes?.voiceButton,\n voiceEnabled && \"active\",\n voiceEnabled && classes?.activeButton,\n )}\n data-active={voiceEnabled}\n onClick={toggleVoice}\n >\n 🎤 {translate(\"voiceCommand\")}\n </button>\n <button\n className={cn(\n classes?.button,\n readAloud && \"active\",\n readAloud && classes?.activeButton,\n )}\n data-active={readAloud}\n onClick={toggleReadAloud}\n >\n 🔊 {translate(\"readAloud\")}\n </button>\n <button\n className={cn(\n classes?.button,\n focusIndicator && \"active\",\n focusIndicator && classes?.activeButton,\n )}\n data-active={focusIndicator}\n onClick={toggleFocusIndicator}\n >\n {translate(\"focusIndicator\")}\n </button>\n <select\n className={cn(classes?.select)}\n value={colorBlindMode}\n onChange={(e) => setColorBlindMode(e.target.value as ColorBlindMode)}\n aria-label={translate(\"colorBlindMode\")}\n >\n <option value=\"none\">{translate(\"colorBlindMode\")}</option>\n <option value=\"protanopia\">Protanopia (Red)</option>\n <option value=\"deuteranopia\">Deuteranopia (Green)</option>\n <option value=\"tritanopia\">Tritanopia (Blue)</option>\n </select>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { useAccessibility } from \"./AccessibilityContext\";\n\nexport interface AccessibilityDropdownClasses {\n root?: string;\n title?: string;\n trigger?: string;\n panel?: string;\n toggle?: string;\n section?: string;\n sectionHeader?: string;\n button?: string;\n activeButton?: string;\n select?: string;\n menu?: string;\n}\n\nexport interface AccessibilityDropdownProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityDropdownClasses;\n triggerLabel?: string;\n renderTrigger?: (props: {\n isOpen: boolean;\n toggle: () => void;\n className: string;\n }) => React.ReactNode;\n}\n\nconst cn = (...parts: Array<string | false | undefined>) =>\n parts.filter(Boolean).join(\" \");\n\nexport interface AccessibilityDropdownClasses {\n root?: string;\n trigger?: string;\n panel?: string;\n panelHeader?: string;\n closeButton?: string;\n}\n\nexport interface AccessibilityDropdownRenderTriggerProps {\n isOpen: boolean;\n toggle: () => void;\n className: string;\n}\n\nexport interface AccessibilityDropdownProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityDropdownClasses;\n triggerLabel?: string;\n renderTrigger?: (\n props: AccessibilityDropdownRenderTriggerProps,\n ) => React.ReactNode;\n}\n\nexport const AccessibilityDropdown: React.FC<AccessibilityDropdownProps> = ({\n className,\n style,\n classes,\n triggerLabel = \"♿ Accessibility\",\n renderTrigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const {\n language,\n setLanguage,\n textSize,\n increaseText,\n decreaseText,\n toggleTextMagnifier,\n togglePauseAnimations,\n toggleReadingGuide,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleUnderlineLinks,\n toggleHighlightTitles,\n toggleReadableFont,\n toggleVoice,\n translate,\n textMagnifier,\n pauseAnimations,\n readingGuide,\n highContrast,\n negativeContrast,\n lightBackground,\n underlineLinks,\n highlightTitles,\n readableFont,\n voiceEnabled,\n } = useAccessibility();\n\n const toggle = () => setIsOpen(!isOpen);\n const closePanel = () => setIsOpen(false);\n const textScaleDelta = textSize - 100;\n const textScaleLabel =\n textScaleDelta === 0\n ? \"Default\"\n : `${textScaleDelta > 0 ? \"+\" : \"\"}${textScaleDelta}%`;\n\n return (\n <div className={cn(\"a11y-root\", classes?.root, className)} style={style}>\n {renderTrigger ? (\n renderTrigger({\n isOpen,\n toggle,\n className: cn(\"a11y-trigger\", classes?.trigger),\n })\n ) : (\n <button\n className={cn(\"a11y-trigger\", classes?.trigger)}\n onClick={toggle}\n >\n {triggerLabel}\n </button>\n )}\n\n {isOpen && (\n <div className={cn(\"a11y-panel\", classes?.panel)}>\n <div className={cn(\"a11y-panel-header\", classes?.panelHeader)}>\n <div className=\"a11y-panel-heading\">\n <span className=\"a11y-panel-eyebrow\">NGP</span>\n <label className={cn(\"a11y-panel-title\", classes?.title)}>\n Accessibility Options\n </label>\n </div>\n <button\n type=\"button\"\n className={cn(\"a11y-panel-close\", classes?.closeButton)}\n onClick={closePanel}\n aria-label=\"Close accessibility panel\"\n >\n ×\n </button>\n </div>\n {/* LANGUAGE */}\n <div className={cn(\"a11y-language\", classes?.section)}>\n <label\n htmlFor=\"a11y-language-select\"\n className={cn(\"a11y-language-label\", classes?.title)}\n >\n {translate(\"language\")}\n </label>\n <select\n id=\"a11y-language-select\"\n value={language}\n onChange={(e) => setLanguage(e.target.value as any)}\n >\n <option value=\"en\">English</option>\n <option value=\"tl\">Tagalog</option>\n <option value=\"ceb\">Cebuano</option>\n <option value=\"ja\">Japanese</option>\n <option value=\"es\">Spanish</option>\n <option value=\"fr\">French</option>\n <option value=\"de\">German</option>\n <option value=\"zh\">Chinese</option>\n <option value=\"ar\">Arabic</option>\n </select>\n </div>\n\n {/* CONTENT ADJUSTMENTS */}\n <section className={cn(\"a11y-section\", classes?.section)}>\n <h3 className={cn(\"a11y-section-title\", classes?.title)}>\n Content Adjustments\n </h3>\n <div className=\"a11y-card\">\n <span className={cn(\"a11y-card-title\", classes?.title)}>\n Content Scaling\n </span>\n\n <div className=\"a11y-stepper\">\n <button onClick={decreaseText}>−</button>\n <span className=\"a11y-stepper-value\">{textScaleLabel}</span>\n <button onClick={increaseText}>+</button>\n </div>\n </div>\n <div className={cn(\"a11y-grid\", classes?.section)}>\n <button\n className={cn(\n \"a11y-card\",\n textMagnifier && \"active\",\n classes?.button,\n )}\n onClick={toggleTextMagnifier}\n >\n {translate(\"textMagnifier\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n readableFont && \"active\",\n classes?.button,\n )}\n onClick={toggleReadableFont}\n >\n Readable Font\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n underlineLinks && \"active\",\n classes?.button,\n )}\n onClick={toggleUnderlineLinks}\n >\n Highlight Links\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n highlightTitles && \"active\",\n classes?.button,\n )}\n onClick={toggleHighlightTitles}\n >\n Highlight Titles\n </button>\n </div>\n </section>\n\n {/* COLOR ADJUSTMENTS */}\n <section className={cn(\"a11y-section\", classes?.section)}>\n <h3 className={cn(\"a11y-section-title\", classes?.title)}>\n Color Adjustments\n </h3>\n\n <div className={cn(\"a11y-grid\", classes?.section)}>\n <button\n className={cn(\n \"a11y-card\",\n highContrast && \"active\",\n classes?.button,\n )}\n onClick={toggleHighContrast}\n >\n {translate(\"highContrast\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n negativeContrast && \"active\",\n classes?.button,\n )}\n onClick={toggleNegativeContrast}\n >\n {translate(\"negativeContrast\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n lightBackground && \"active\",\n classes?.button,\n )}\n onClick={toggleLightBackground}\n >\n {translate(\"lightBackground\")}\n </button>\n </div>\n </section>\n\n {/* ACCESSIBILITY TOOLS */}\n <section className={cn(\"a11y-section\", classes?.section)}>\n <h3 className={cn(\"a11y-section-title\", classes?.title)}>\n Accessibility Tools\n </h3>\n\n <div className={cn(\"a11y-grid\", classes?.section)}>\n <button\n className={cn(\n \"a11y-card\",\n pauseAnimations && \"active\",\n classes?.button,\n )}\n onClick={togglePauseAnimations}\n >\n {translate(\"pauseAnimations\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n readingGuide && \"active\",\n classes?.button,\n )}\n onClick={toggleReadingGuide}\n >\n {translate(\"readingGuide\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n voiceEnabled && \"active\",\n classes?.button,\n )}\n onClick={toggleVoice}\n >\n {translate(\"voiceCommand\")}\n </button>\n </div>\n </section>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useAccessibility } from './AccessibilityContext';\nimport { TranslationKey } from './translations';\n\ninterface TProps {\n k: TranslationKey | string;\n children?: React.ReactNode;\n}\n\nexport const T: React.FC<TProps> = ({ k, children }) => {\n const { translate, language } = useAccessibility();\n \n if (children && typeof children === 'string') {\n return <>{children}</>;\n }\n \n return <>{translate(k as TranslationKey)}</>;\n};\n"],"names":["createContext","useState","useEffect","useContext","cn"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/translations.ts","../src/AccessibilityContext.tsx","../src/AccessibilityToolbar.tsx","../src/AccessibilityDropdown.tsx","../src/T.tsx"],"sourcesContent":["export const translations = {\n en: {\n language: \"Language\",\n increaseText: \"Increase Text\",\n decreaseText: \"Decrease Text\",\n textMagnifier: \"Text Magnifier\",\n highContrast: \"High Contrast\",\n negativeContrast: \"Negative Contrast\",\n lightBackground: \"Light Background\",\n darkMode: \"Dark Mode\",\n underlineLinks: \"Underline Links\",\n highlightTitles: \"Highlight Titles\",\n readableFont: \"Readable Font\",\n pauseAnimations: \"Pause Animations\",\n readingGuide: \"Reading Guide\",\n readAloud: \"Read Aloud\",\n colorBlindMode: \"Color Blind Mode\",\n focusIndicator: \"Focus Indicator\",\n },\n tl: {\n language: \"Wika\",\n increaseText: \"Palakihin ang Teksto\",\n decreaseText: \"Paliitin ang Teksto\",\n textMagnifier: \"Text Magnifier\",\n highContrast: \"Mataas na Contrast\",\n negativeContrast: \"Negatibong Contrast\",\n lightBackground: \"Maliwanag na Background\",\n darkMode: \"Madilim na Mode\",\n underlineLinks: \"May Guhit na Links\",\n highlightTitles: \"I-highlight ang Mga Pamagat\",\n readableFont: \"Madaling Basahin na Font\",\n pauseAnimations: \"I-pause ang mga Animation\",\n readingGuide: \"Reading Guide\",\n readAloud: \"Basahin nang Malakas\",\n colorBlindMode: \"Color Blind Mode\",\n focusIndicator: \"Focus Indicator\",\n },\n ceb: {\n language: \"Pinulongan\",\n increaseText: \"Padak-on ang Teksto\",\n decreaseText: \"Pagamay-on ang Teksto\",\n textMagnifier: \"Text Magnifier\",\n highContrast: \"Taas nga Contrast\",\n negativeContrast: \"Negatibo nga Contrast\",\n lightBackground: \"Hayag nga Background\",\n darkMode: \"Ngitngit nga Mode\",\n underlineLinks: \"Linya sa Ubos sa Links\",\n highlightTitles: \"I-highlight ang mga Ulohan\",\n readableFont: \"Sayon Basahon nga Font\",\n pauseAnimations: \"Ihunong ang mga Animation\",\n readingGuide: \"Reading Guide\",\n readAloud: \"Basaha og Kusog\",\n colorBlindMode: \"Color Blind Mode\",\n focusIndicator: \"Focus Indicator\",\n },\n};\n\nexport type ManualLanguage = keyof typeof translations;\nexport type Language = ManualLanguage | (string & {});\nexport type TranslationKey = keyof typeof translations.en;\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n ReactNode,\n} from \"react\";\nimport {\n Language,\n ManualLanguage,\n translations,\n TranslationKey,\n} from \"./translations\";\n\nconst GOOGLE_TRANSLATE_COOKIE_NAME = \"googtrans\";\nconst GOOGLE_TRANSLATE_SOURCE_LANGUAGE = \"en\";\n\nconst getCookieDomains = () => {\n const domains = new Set<string>([window.location.hostname]);\n const hostnameParts = window.location.hostname.split(\".\");\n\n if (hostnameParts.length > 2) {\n domains.add(hostnameParts.slice(-2).join(\".\"));\n }\n\n return Array.from(domains);\n};\n\nconst setGoogleTranslateCookie = (targetLanguage: string) => {\n const cookieValue = `/${GOOGLE_TRANSLATE_SOURCE_LANGUAGE}/${targetLanguage}`;\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=${cookieValue}; path=/; SameSite=Lax`;\n\n for (const domain of getCookieDomains()) {\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=${cookieValue}; path=/; domain=${domain}; SameSite=Lax`;\n }\n};\n\nconst clearGoogleTranslateCookie = () => {\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; SameSite=Lax`;\n\n for (const domain of getCookieDomains()) {\n document.cookie = `${GOOGLE_TRANSLATE_COOKIE_NAME}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/; domain=${domain}; SameSite=Lax`;\n }\n};\n\nconst dispatchNativeChangeEvent = (element: HTMLSelectElement) => {\n element.dispatchEvent(new Event(\"change\", { bubbles: true }));\n};\n\nconst normalizeMagnifierText = (value: string) =>\n value.replace(/\\s+/g, \" \").trim();\n\nconst magnifierSelector =\n \"p, li, button, h1, h2, h3, h4, h5, h6, [role=heading]\";\n\nconst getMagnifierElement = (target: EventTarget | null) => {\n if (!(target instanceof HTMLElement)) return null;\n if (target.closest(\".a11y-root\")) return null;\n\n const element = target.closest(magnifierSelector);\n return element instanceof HTMLElement ? element : null;\n};\n\nconst getMagnifierText = (target: EventTarget | null) => {\n const element = getMagnifierElement(target);\n if (!element) return \"\";\n\n const ariaLabel = normalizeMagnifierText(\n element.getAttribute(\"aria-label\") || \"\",\n );\n if (ariaLabel) return ariaLabel;\n\n return normalizeMagnifierText(element.innerText || element.textContent || \"\");\n};\n\nexport type ColorBlindMode =\n | \"none\"\n | \"protanopia\"\n | \"deuteranopia\"\n | \"tritanopia\";\n\ninterface AccessibilityState {\n language: Language;\n textSize: number;\n textMagnifier: boolean;\n pauseAnimations: boolean;\n readingGuide: boolean;\n highContrast: boolean;\n negativeContrast: boolean;\n lightBackground: boolean;\n darkMode: boolean;\n underlineLinks: boolean;\n highlightTitles: boolean;\n readableFont: boolean;\n readAloud: boolean;\n colorBlindMode: ColorBlindMode;\n focusIndicator: boolean;\n}\n\ninterface AccessibilityContextType extends AccessibilityState {\n setLanguage: (lang: Language) => void;\n increaseText: () => void;\n decreaseText: () => void;\n toggleTextMagnifier: () => void;\n togglePauseAnimations: () => void;\n toggleReadingGuide: () => void;\n toggleHighContrast: () => void;\n toggleNegativeContrast: () => void;\n toggleLightBackground: () => void;\n toggleDarkMode: () => void;\n toggleUnderlineLinks: () => void;\n toggleHighlightTitles: () => void;\n toggleReadableFont: () => void;\n toggleReadAloud: () => void;\n setColorBlindMode: (mode: ColorBlindMode) => void;\n toggleFocusIndicator: () => void;\n hasManualTranslations: boolean;\n translate: (key: TranslationKey) => string;\n t: (key: string) => string;\n}\n\nconst AccessibilityContext = createContext<\n AccessibilityContextType | undefined\n>(undefined);\n\nexport interface AccessibilityProviderProps {\n children: ReactNode;\n translations?: Partial<Record<Language, Record<string, string>>>;\n googleTranslateTargetSelector?: string;\n /** @deprecated Use googleTranslateTargetSelector instead. */\n translationTargetSelector?: string;\n}\n\nexport const AccessibilityProvider: React.FC<AccessibilityProviderProps> = ({\n children,\n translations: customTranslations,\n googleTranslateTargetSelector,\n translationTargetSelector,\n}) => {\n const [state, setState] = useState<AccessibilityState>({\n language: \"en\",\n textSize: 100,\n textMagnifier: false,\n pauseAnimations: false,\n readingGuide: false,\n highContrast: false,\n negativeContrast: false,\n lightBackground: false,\n darkMode: false,\n underlineLinks: false,\n highlightTitles: false,\n readableFont: false,\n readAloud: false,\n colorBlindMode: \"none\",\n focusIndicator: false,\n });\n\n const allTranslations: Partial<Record<Language, Record<string, string>>> =\n customTranslations || translations;\n\n const defaultUiTranslations = translations.en;\n const manualTranslationsForLanguage =\n translations[state.language as ManualLanguage];\n const hasManualTranslations = Boolean(manualTranslationsForLanguage);\n\n const resolvedTranslationTargetSelector =\n googleTranslateTargetSelector ?? translationTargetSelector ?? \"main\";\n\n useEffect(() => {\n const target = document.querySelector<HTMLElement>(\n resolvedTranslationTargetSelector,\n );\n if (!target) {\n console.warn(\n `[NGP Accessibility] Google translation target selector \"${resolvedTranslationTargetSelector}\" did not match any element. Falling back to page-wide translation behavior.`,\n );\n return;\n }\n\n const markedElements = new Set<HTMLElement>();\n let current: HTMLElement | null = target;\n\n while (current && current !== document.body) {\n const parentElement: HTMLElement | null = current.parentElement;\n if (!parentElement) break;\n\n for (const sibling of Array.from(parentElement.children)) {\n if (sibling === current || !(sibling instanceof HTMLElement)) continue;\n if (sibling.id === \"a11y-google-translate-element\") continue;\n\n sibling.classList.add(\"notranslate\");\n sibling.setAttribute(\"translate\", \"no\");\n sibling.dataset.a11yTranslationScoped = \"true\";\n markedElements.add(sibling);\n }\n\n current = parentElement;\n }\n\n return () => {\n for (const element of markedElements) {\n if (element.dataset.a11yTranslationScoped !== \"true\") continue;\n element.classList.remove(\"notranslate\");\n element.removeAttribute(\"translate\");\n delete element.dataset.a11yTranslationScoped;\n }\n };\n }, [resolvedTranslationTargetSelector]);\n\n useEffect(() => {\n const root = document.documentElement;\n root.style.fontSize = `${state.textSize}%`;\n\n root.classList.toggle(\"high-contrast\", state.highContrast);\n root.classList.toggle(\"negative-contrast\", state.negativeContrast);\n root.classList.toggle(\"light-background\", state.lightBackground);\n root.classList.toggle(\"dark-mode\", state.darkMode);\n root.classList.toggle(\"underline-links\", state.underlineLinks);\n root.classList.toggle(\"highlight-titles\", state.highlightTitles);\n root.classList.toggle(\"readable-font\", state.readableFont);\n root.classList.toggle(\"pause-animations\", state.pauseAnimations);\n root.classList.toggle(\"focus-indicator\", state.focusIndicator);\n\n const body = document.body;\n if (state.colorBlindMode !== \"none\") {\n body.style.filter = `url(#a11y-${state.colorBlindMode})`;\n } else {\n body.style.filter = \"\";\n }\n }, [state]);\n\n useEffect(() => {\n const svgId = \"a11y-colorblind-filters\";\n if (document.getElementById(svgId)) return;\n\n const svg = document.createElementNS(\"http://www.w3.org/2000/svg\", \"svg\");\n svg.id = svgId;\n svg.setAttribute(\"aria-hidden\", \"true\");\n svg.style.cssText = \"position:absolute;width:0;height:0;overflow:hidden;\";\n svg.innerHTML = `\n <defs>\n <filter id=\"a11y-protanopia\">\n <feColorMatrix type=\"matrix\" values=\"\n 0.567 0.433 0 0 0\n 0.558 0.442 0 0 0\n 0 0.242 0.758 0 0\n 0 0 0 1 0\"/>\n </filter>\n <filter id=\"a11y-deuteranopia\">\n <feColorMatrix type=\"matrix\" values=\"\n 0.625 0.375 0 0 0\n 0.7 0.3 0 0 0\n 0 0.3 0.7 0 0\n 0 0 0 1 0\"/>\n </filter>\n <filter id=\"a11y-tritanopia\">\n <feColorMatrix type=\"matrix\" values=\"\n 0.95 0.05 0 0 0\n 0 0.433 0.567 0 0\n 0 0.475 0.525 0 0\n 0 0 0 1 0\"/>\n </filter>\n </defs>\n `;\n document.body.prepend(svg);\n\n return () => {\n document.getElementById(svgId)?.remove();\n };\n }, []);\n\n useEffect(() => {\n if (!state.readAloud || !(\"speechSynthesis\" in window)) return;\n\n const readableSelector =\n \"p, li, button, a, h1, h2, h3, h4, h5, h6, label, td, th, [role='button'], [role='heading'], [role='link']\";\n\n const speak = (text: string) => {\n window.speechSynthesis.cancel();\n const utterance = new SpeechSynthesisUtterance(text);\n utterance.lang =\n state.language === \"tl\"\n ? \"tl-PH\"\n : state.language === \"ceb\"\n ? \"fil-PH\"\n : \"en-US\";\n utterance.rate = 0.95;\n window.speechSynthesis.speak(utterance);\n };\n\n const getReadableText = (el: HTMLElement): string =>\n normalizeMagnifierText(\n el.getAttribute(\"aria-label\") ||\n el.getAttribute(\"placeholder\") ||\n el.getAttribute(\"title\") ||\n el.innerText ||\n el.textContent ||\n \"\",\n );\n\n const handleMouseOver = (event: MouseEvent) => {\n const target = event.target as HTMLElement | null;\n if (!target) return;\n const el = target.closest(readableSelector);\n if (!el || el.closest(\".a11y-root\")) return;\n const text = getReadableText(el as HTMLElement);\n if (text) speak(text);\n };\n\n const handleFocus = (event: FocusEvent) => {\n const el = event.target as HTMLElement | null;\n if (!el || el.closest(\".a11y-root\")) return;\n const text = getReadableText(el);\n if (text) speak(text);\n };\n\n document.addEventListener(\"mouseover\", handleMouseOver, true);\n document.addEventListener(\"focusin\", handleFocus, true);\n\n return () => {\n document.removeEventListener(\"mouseover\", handleMouseOver, true);\n document.removeEventListener(\"focusin\", handleFocus, true);\n window.speechSynthesis.cancel();\n };\n }, [state.readAloud, state.language]);\n\n useEffect(() => {\n if (!state.readingGuide) return;\n\n const guide = document.createElement(\"div\");\n guide.className = \"a11y-reading-guide\";\n guide.setAttribute(\"aria-hidden\", \"true\");\n guide.innerHTML = `\n <div class=\"a11y-reading-guide-top\"></div>\n <div class=\"a11y-reading-guide-focus\"></div>\n <div class=\"a11y-reading-guide-line\"></div>\n <div class=\"a11y-reading-guide-bottom\"></div>\n `;\n document.body.appendChild(guide);\n\n const topMask = guide.querySelector(\n \".a11y-reading-guide-top\",\n ) as HTMLDivElement;\n const focusBand = guide.querySelector(\n \".a11y-reading-guide-focus\",\n ) as HTMLDivElement;\n const focusLine = guide.querySelector(\n \".a11y-reading-guide-line\",\n ) as HTMLDivElement;\n const bottomMask = guide.querySelector(\n \".a11y-reading-guide-bottom\",\n ) as HTMLDivElement;\n\n const bandHeight = 72;\n const halfBandHeight = bandHeight / 2;\n\n const updateGuide = (clientY: number) => {\n const safeY = Math.min(\n Math.max(halfBandHeight + 12, clientY),\n window.innerHeight - halfBandHeight - 12,\n );\n const top = Math.max(0, safeY - halfBandHeight);\n const bottom = Math.min(window.innerHeight, safeY + halfBandHeight);\n\n topMask.style.height = `${top}px`;\n focusBand.style.top = `${top}px`;\n focusBand.style.height = `${bottom - top}px`;\n focusLine.style.top = `${safeY}px`;\n bottomMask.style.top = `${bottom}px`;\n bottomMask.style.height = `${Math.max(0, window.innerHeight - bottom)}px`;\n };\n\n const resetGuide = () => updateGuide(window.innerHeight / 2);\n\n const handleMouseMove = (event: MouseEvent) => updateGuide(event.clientY);\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) updateGuide(touch.clientY);\n };\n const handleTouchMove = (event: TouchEvent) => {\n const touch = event.touches[0];\n if (touch) updateGuide(touch.clientY);\n };\n\n resetGuide();\n document.addEventListener(\"mousemove\", handleMouseMove, true);\n document.addEventListener(\"touchstart\", handleTouchStart, true);\n document.addEventListener(\"touchmove\", handleTouchMove, true);\n window.addEventListener(\"resize\", resetGuide);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\n document.removeEventListener(\"touchstart\", handleTouchStart, true);\n document.removeEventListener(\"touchmove\", handleTouchMove, true);\n window.removeEventListener(\"resize\", resetGuide);\n guide.remove();\n };\n }, [state.readingGuide]);\n\n useEffect(() => {\n if (!state.textMagnifier) return;\n\n const tooltip = document.createElement(\"div\");\n tooltip.className = \"a11y-text-magnifier-tooltip\";\n tooltip.setAttribute(\"aria-hidden\", \"true\");\n document.body.appendChild(tooltip);\n\n const hideTooltip = () => {\n tooltip.removeAttribute(\"data-visible\");\n tooltip.textContent = \"\";\n };\n\n const showTooltip = (text: string) => {\n tooltip.textContent = text;\n tooltip.setAttribute(\"data-visible\", \"true\");\n };\n\n const updateTooltipPosition = (clientX: number, clientY: number) => {\n const tooltipWidth = tooltip.offsetWidth || 320;\n const tooltipHeight = tooltip.offsetHeight || 56;\n const left = Math.min(\n Math.max(12, clientX + 18),\n window.innerWidth - tooltipWidth - 12,\n );\n const top =\n clientY + tooltipHeight + 18 > window.innerHeight\n ? Math.max(12, clientY - tooltipHeight - 18)\n : clientY + 18;\n\n tooltip.style.left = `${left}px`;\n tooltip.style.top = `${top}px`;\n };\n\n const handleMouseMove = (event: MouseEvent) => {\n const text = getMagnifierText(event.target);\n if (!text) {\n hideTooltip();\n return;\n }\n\n showTooltip(text);\n updateTooltipPosition(event.clientX, event.clientY);\n };\n\n let touchTimer: number | null = null;\n let activeTouchId: number | null = null;\n let activeText = \"\";\n let pressPoint: { x: number; y: number } | null = null;\n\n const clearTouchTimer = () => {\n if (touchTimer !== null) {\n window.clearTimeout(touchTimer);\n touchTimer = null;\n }\n };\n\n const resetTouchState = () => {\n clearTouchTimer();\n activeTouchId = null;\n activeText = \"\";\n pressPoint = null;\n hideTooltip();\n };\n\n const getTrackedTouch = (touches: TouchList) => {\n if (activeTouchId === null) return null;\n for (const touch of Array.from(touches)) {\n if (touch.identifier === activeTouchId) return touch;\n }\n return null;\n };\n\n const handleTouchStart = (event: TouchEvent) => {\n const touch = event.changedTouches[0];\n if (!touch) return;\n\n const text = getMagnifierText(event.target);\n if (!text) {\n resetTouchState();\n return;\n }\n\n clearTouchTimer();\n activeTouchId = touch.identifier;\n activeText = text;\n pressPoint = { x: touch.clientX, y: touch.clientY };\n\n touchTimer = window.setTimeout(() => {\n showTooltip(activeText);\n updateTooltipPosition(touch.clientX, touch.clientY);\n touchTimer = null;\n }, 450);\n };\n\n const handleTouchMove = (event: TouchEvent) => {\n const touch = getTrackedTouch(event.touches);\n if (!touch) return;\n\n if (!tooltip.hasAttribute(\"data-visible\")) {\n if (\n pressPoint &&\n (Math.abs(touch.clientX - pressPoint.x) > 10 ||\n Math.abs(touch.clientY - pressPoint.y) > 10)\n ) {\n resetTouchState();\n }\n return;\n }\n\n updateTooltipPosition(touch.clientX, touch.clientY);\n };\n\n const handleTouchEnd = () => resetTouchState();\n const handleTouchCancel = () => resetTouchState();\n const handlePointerLeave = () => hideTooltip();\n\n document.addEventListener(\"mousemove\", handleMouseMove, true);\n document.addEventListener(\"touchstart\", handleTouchStart, true);\n document.addEventListener(\"touchmove\", handleTouchMove, true);\n document.addEventListener(\"touchend\", handleTouchEnd, true);\n document.addEventListener(\"touchcancel\", handleTouchCancel, true);\n document.addEventListener(\"scroll\", hideTooltip, true);\n window.addEventListener(\"blur\", handlePointerLeave);\n\n return () => {\n document.removeEventListener(\"mousemove\", handleMouseMove, true);\n document.removeEventListener(\"touchstart\", handleTouchStart, true);\n document.removeEventListener(\"touchmove\", handleTouchMove, true);\n document.removeEventListener(\"touchend\", handleTouchEnd, true);\n document.removeEventListener(\"touchcancel\", handleTouchCancel, true);\n document.removeEventListener(\"scroll\", hideTooltip, true);\n window.removeEventListener(\"blur\", handlePointerLeave);\n clearTouchTimer();\n tooltip.remove();\n };\n }, [state.textMagnifier]);\n\n const setLanguage = (lang: Language) =>\n setState((s) => ({ ...s, language: lang }));\n const increaseText = () =>\n setState((s) => ({ ...s, textSize: Math.min(s.textSize + 10, 200) }));\n const decreaseText = () =>\n setState((s) => ({ ...s, textSize: Math.max(s.textSize - 10, 80) }));\n const toggleTextMagnifier = () =>\n setState((s) => ({ ...s, textMagnifier: !s.textMagnifier }));\n const togglePauseAnimations = () =>\n setState((s) => ({ ...s, pauseAnimations: !s.pauseAnimations }));\n const toggleReadingGuide = () =>\n setState((s) => ({ ...s, readingGuide: !s.readingGuide }));\n const toggleHighContrast = () =>\n setState((s) => ({\n ...s,\n highContrast: !s.highContrast,\n negativeContrast: false,\n }));\n const toggleNegativeContrast = () =>\n setState((s) => ({\n ...s,\n negativeContrast: !s.negativeContrast,\n highContrast: false,\n }));\n const toggleLightBackground = () =>\n setState((s) => ({\n ...s,\n lightBackground: !s.lightBackground,\n darkMode: s.lightBackground ? s.darkMode : false,\n }));\n const toggleDarkMode = () =>\n setState((s) => ({\n ...s,\n darkMode: !s.darkMode,\n lightBackground: s.darkMode ? s.lightBackground : false,\n }));\n const toggleUnderlineLinks = () =>\n setState((s) => ({ ...s, underlineLinks: !s.underlineLinks }));\n const toggleHighlightTitles = () =>\n setState((s) => ({ ...s, highlightTitles: !s.highlightTitles }));\n const toggleReadableFont = () =>\n setState((s) => ({ ...s, readableFont: !s.readableFont }));\n const toggleReadAloud = () =>\n setState((s) => ({ ...s, readAloud: !s.readAloud }));\n const setColorBlindMode = (mode: ColorBlindMode) =>\n setState((s) => ({ ...s, colorBlindMode: mode }));\n const toggleFocusIndicator = () =>\n setState((s) => ({ ...s, focusIndicator: !s.focusIndicator }));\n // Google Translate: auto-translate page content when language changes\n useEffect(() => {\n const GTRANSLATE_SCRIPT_ID = \"a11y-google-translate-script\";\n const GTRANSLATE_CONTAINER_ID = \"a11y-google-translate-element\";\n\n const loadGoogleTranslateScript = () => {\n if (document.getElementById(GTRANSLATE_SCRIPT_ID)) return;\n\n // Create hidden container for the widget\n const container = document.createElement(\"div\");\n container.id = GTRANSLATE_CONTAINER_ID;\n container.style.display = \"none\";\n document.body.appendChild(container);\n\n // Define the init callback\n (window as any).googleTranslateElementInit = () => {\n new (window as any).google.translate.TranslateElement(\n {\n pageLanguage: \"en\",\n autoDisplay: false,\n },\n GTRANSLATE_CONTAINER_ID,\n );\n };\n\n const script = document.createElement(\"script\");\n script.id = GTRANSLATE_SCRIPT_ID;\n script.src =\n \"//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit\";\n script.async = true;\n document.body.appendChild(script);\n };\n\n const triggerTranslation = (langCode: string) => {\n setGoogleTranslateCookie(langCode);\n\n const select =\n document.querySelector<HTMLSelectElement>(\".goog-te-combo\");\n if (select) {\n select.value = langCode;\n dispatchNativeChangeEvent(select);\n }\n };\n\n const resetTranslation = () => {\n const select =\n document.querySelector<HTMLSelectElement>(\".goog-te-combo\");\n if (select) {\n select.value = GOOGLE_TRANSLATE_SOURCE_LANGUAGE;\n dispatchNativeChangeEvent(select);\n }\n\n clearGoogleTranslateCookie();\n };\n\n const langMap: Record<string, string> = {\n en: GOOGLE_TRANSLATE_SOURCE_LANGUAGE,\n tl: \"tl\",\n ceb: \"ceb\",\n ja: \"ja\",\n es: \"es\",\n fr: \"fr\",\n de: \"de\",\n zh: \"zh-CN\",\n ar: \"ar\",\n };\n\n const googleLang = langMap[state.language] || state.language;\n\n if (googleLang === GOOGLE_TRANSLATE_SOURCE_LANGUAGE) {\n resetTranslation();\n return;\n }\n\n loadGoogleTranslateScript();\n setGoogleTranslateCookie(googleLang);\n\n // Wait for Google Translate widget to be ready, then trigger\n const interval = window.setInterval(() => {\n const select =\n document.querySelector<HTMLSelectElement>(\".goog-te-combo\");\n if (select) {\n window.clearInterval(interval);\n triggerTranslation(googleLang);\n }\n }, 300);\n\n return () => window.clearInterval(interval);\n }, [state.language]);\n\n const translate = (key: TranslationKey) =>\n manualTranslationsForLanguage?.[key] || defaultUiTranslations[key];\n const t = (key: string) =>\n allTranslations[state.language]?.[key] || allTranslations.en?.[key] || key;\n\n return (\n <AccessibilityContext.Provider\n value={{\n ...state,\n setLanguage,\n increaseText,\n decreaseText,\n toggleTextMagnifier,\n togglePauseAnimations,\n toggleReadingGuide,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleDarkMode,\n toggleUnderlineLinks,\n toggleHighlightTitles,\n toggleReadableFont,\n toggleReadAloud,\n setColorBlindMode,\n toggleFocusIndicator,\n hasManualTranslations,\n translate,\n t,\n }}\n >\n {children}\n </AccessibilityContext.Provider>\n );\n};\n\nexport const useAccessibility = () => {\n const context = useContext(AccessibilityContext);\n if (!context)\n throw new Error(\n \"useAccessibility must be used within AccessibilityProvider\",\n );\n return context;\n};\n","import React from \"react\";\nimport { useAccessibility } from \"./AccessibilityContext\";\nimport type { ColorBlindMode } from \"./AccessibilityContext\";\n\nexport interface AccessibilityToolbarClasses {\n root?: string;\n select?: string;\n button?: string;\n activeButton?: string;\n}\n\nexport interface AccessibilityToolbarProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityToolbarClasses;\n}\n\nconst cn = (...parts: Array<string | false | undefined>) =>\n parts.filter(Boolean).join(\" \");\n\nexport const AccessibilityToolbar: React.FC<AccessibilityToolbarProps> = ({\n className,\n style,\n classes,\n}) => {\n const {\n language,\n setLanguage,\n increaseText,\n decreaseText,\n toggleTextMagnifier,\n togglePauseAnimations,\n toggleReadingGuide,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleDarkMode,\n toggleUnderlineLinks,\n toggleHighlightTitles,\n toggleReadableFont,\n toggleReadAloud,\n setColorBlindMode,\n toggleFocusIndicator,\n translate,\n textMagnifier,\n pauseAnimations,\n readingGuide,\n highContrast,\n negativeContrast,\n lightBackground,\n darkMode,\n underlineLinks,\n highlightTitles,\n readableFont,\n readAloud,\n colorBlindMode,\n focusIndicator,\n } = useAccessibility();\n\n return (\n <div\n className={cn(\n \"accessibility-toolbar notranslate\",\n classes?.root,\n className,\n )}\n style={style}\n translate=\"no\"\n >\n <select\n className={cn(\"notranslate\", classes?.select)}\n value={language}\n onChange={(e) => setLanguage(e.target.value as any)}\n translate=\"no\"\n >\n <option value=\"en\">English</option>\n <option value=\"tl\">Tagalog</option>\n <option value=\"ceb\">Cebuano</option>\n </select>\n <button className={cn(classes?.button)} onClick={increaseText}>\n + {translate(\"increaseText\")}\n </button>\n <button className={cn(classes?.button)} onClick={decreaseText}>\n - {translate(\"decreaseText\")}\n </button>\n <button\n className={cn(\n classes?.button,\n textMagnifier && \"active\",\n textMagnifier && classes?.activeButton,\n )}\n data-active={textMagnifier}\n onClick={toggleTextMagnifier}\n >\n {translate(\"textMagnifier\")}\n </button>\n <button\n className={cn(\n classes?.button,\n highContrast && \"active\",\n highContrast && classes?.activeButton,\n )}\n data-active={highContrast}\n onClick={toggleHighContrast}\n >\n {translate(\"highContrast\")}\n </button>\n <button\n className={cn(\n classes?.button,\n negativeContrast && \"active\",\n negativeContrast && classes?.activeButton,\n )}\n data-active={negativeContrast}\n onClick={toggleNegativeContrast}\n >\n {translate(\"negativeContrast\")}\n </button>\n <button\n className={cn(\n classes?.button,\n lightBackground && \"active\",\n lightBackground && classes?.activeButton,\n )}\n data-active={lightBackground}\n onClick={toggleLightBackground}\n >\n {translate(\"lightBackground\")}\n </button>\n <button\n className={cn(\n classes?.button,\n darkMode && \"active\",\n darkMode && classes?.activeButton,\n )}\n data-active={darkMode}\n onClick={toggleDarkMode}\n >\n {translate(\"darkMode\")}\n </button>\n <button\n className={cn(\n classes?.button,\n underlineLinks && \"active\",\n underlineLinks && classes?.activeButton,\n )}\n data-active={underlineLinks}\n onClick={toggleUnderlineLinks}\n >\n {translate(\"underlineLinks\")}\n </button>\n <button\n className={cn(\n classes?.button,\n highlightTitles && \"active\",\n highlightTitles && classes?.activeButton,\n )}\n data-active={highlightTitles}\n onClick={toggleHighlightTitles}\n >\n {translate(\"highlightTitles\")}\n </button>\n <button\n className={cn(\n classes?.button,\n readableFont && \"active\",\n readableFont && classes?.activeButton,\n )}\n data-active={readableFont}\n onClick={toggleReadableFont}\n >\n {translate(\"readableFont\")}\n </button>\n <button\n className={cn(\n classes?.button,\n pauseAnimations && \"active\",\n pauseAnimations && classes?.activeButton,\n )}\n data-active={pauseAnimations}\n onClick={togglePauseAnimations}\n >\n {translate(\"pauseAnimations\")}\n </button>\n <button\n className={cn(\n classes?.button,\n readingGuide && \"active\",\n readingGuide && classes?.activeButton,\n )}\n data-active={readingGuide}\n onClick={toggleReadingGuide}\n >\n {translate(\"readingGuide\")}\n </button>\n <button\n className={cn(\n classes?.button,\n readAloud && \"active\",\n readAloud && classes?.activeButton,\n )}\n data-active={readAloud}\n onClick={toggleReadAloud}\n >\n 🔊 {translate(\"readAloud\")}\n </button>\n <button\n className={cn(\n classes?.button,\n focusIndicator && \"active\",\n focusIndicator && classes?.activeButton,\n )}\n data-active={focusIndicator}\n onClick={toggleFocusIndicator}\n >\n {translate(\"focusIndicator\")}\n </button>\n <select\n className={cn(classes?.select)}\n value={colorBlindMode}\n onChange={(e) => setColorBlindMode(e.target.value as ColorBlindMode)}\n aria-label={translate(\"colorBlindMode\")}\n >\n <option value=\"none\">{translate(\"colorBlindMode\")}</option>\n <option value=\"protanopia\">Protanopia (Red)</option>\n <option value=\"deuteranopia\">Deuteranopia (Green)</option>\n <option value=\"tritanopia\">Tritanopia (Blue)</option>\n </select>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { useAccessibility } from \"./AccessibilityContext\";\n\nexport interface AccessibilityDropdownClasses {\n root?: string;\n title?: string;\n trigger?: string;\n panel?: string;\n toggle?: string;\n section?: string;\n sectionHeader?: string;\n button?: string;\n activeButton?: string;\n select?: string;\n menu?: string;\n}\n\nexport interface AccessibilityDropdownProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityDropdownClasses;\n triggerLabel?: string;\n renderTrigger?: (props: {\n isOpen: boolean;\n toggle: () => void;\n className: string;\n }) => React.ReactNode;\n}\n\nconst cn = (...parts: Array<string | false | undefined>) =>\n parts.filter(Boolean).join(\" \");\n\nexport interface AccessibilityDropdownClasses {\n root?: string;\n trigger?: string;\n panel?: string;\n panelHeader?: string;\n closeButton?: string;\n}\n\nexport interface AccessibilityDropdownRenderTriggerProps {\n isOpen: boolean;\n toggle: () => void;\n className: string;\n}\n\nexport interface AccessibilityDropdownProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityDropdownClasses;\n triggerLabel?: string;\n renderTrigger?: (\n props: AccessibilityDropdownRenderTriggerProps,\n ) => React.ReactNode;\n}\n\nexport const AccessibilityDropdown: React.FC<AccessibilityDropdownProps> = ({\n className,\n style,\n classes,\n triggerLabel = \"♿ Accessibility\",\n renderTrigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const {\n language,\n setLanguage,\n textSize,\n increaseText,\n decreaseText,\n toggleTextMagnifier,\n togglePauseAnimations,\n toggleReadingGuide,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleDarkMode,\n toggleUnderlineLinks,\n toggleHighlightTitles,\n toggleReadableFont,\n translate,\n textMagnifier,\n pauseAnimations,\n readingGuide,\n highContrast,\n negativeContrast,\n lightBackground,\n darkMode,\n underlineLinks,\n highlightTitles,\n readableFont,\n } = useAccessibility();\n\n const toggle = () => setIsOpen(!isOpen);\n const closePanel = () => setIsOpen(false);\n const textScaleDelta = textSize - 100;\n const textScaleLabel =\n textScaleDelta === 0\n ? \"Default\"\n : `${textScaleDelta > 0 ? \"+\" : \"\"}${textScaleDelta}%`;\n\n return (\n <div className={cn(\"a11y-root\", classes?.root, className)} style={style}>\n {renderTrigger ? (\n renderTrigger({\n isOpen,\n toggle,\n className: cn(\"a11y-trigger\", classes?.trigger),\n })\n ) : (\n <button\n className={cn(\"a11y-trigger\", classes?.trigger)}\n onClick={toggle}\n >\n {triggerLabel}\n </button>\n )}\n\n {isOpen && (\n <div className={cn(\"a11y-panel\", classes?.panel)}>\n <div className={cn(\"a11y-panel-header\", classes?.panelHeader)}>\n <div className=\"a11y-panel-heading\">\n {/* <span className=\"a11y-panel-eyebrow\">NGP</span> */}\n <label className={cn(\"a11y-panel-title\", classes?.title)}>\n Accessibility Options\n </label>\n </div>\n <button\n type=\"button\"\n className={cn(\"a11y-panel-close\", classes?.closeButton)}\n onClick={closePanel}\n aria-label=\"Close accessibility panel\"\n >\n ×\n </button>\n </div>\n {/* LANGUAGE */}\n <div className={cn(\"a11y-language\", classes?.section)}>\n <label\n htmlFor=\"a11y-language-select\"\n className={cn(\"a11y-language-label\", classes?.title)}\n >\n {translate(\"language\")}\n </label>\n <select\n id=\"a11y-language-select\"\n className=\"notranslate\"\n value={language}\n onChange={(e) => setLanguage(e.target.value as any)}\n translate=\"no\"\n >\n <option value=\"en\">English</option>\n <option value=\"tl\">Tagalog</option>\n <option value=\"ceb\">Cebuano</option>\n <option value=\"ja\">Japanese</option>\n <option value=\"es\">Spanish</option>\n <option value=\"fr\">French</option>\n <option value=\"de\">German</option>\n <option value=\"zh\">Chinese</option>\n <option value=\"ar\">Arabic</option>\n </select>\n </div>\n\n {/* CONTENT ADJUSTMENTS */}\n <section className={cn(\"a11y-section\", classes?.section)}>\n <h3 className={cn(\"a11y-section-title\", classes?.title)}>\n Content Adjustments\n </h3>\n <div className=\"a11y-card\">\n <span className={cn(\"a11y-card-title\", classes?.title)}>\n Content Scaling\n </span>\n\n <div className=\"a11y-stepper\">\n <button onClick={decreaseText}>−</button>\n <span className=\"a11y-stepper-value\">{textScaleLabel}</span>\n <button onClick={increaseText}>+</button>\n </div>\n </div>\n <div className={cn(\"a11y-grid\", classes?.section)}>\n <button\n className={cn(\n \"a11y-card\",\n textMagnifier && \"active\",\n classes?.button,\n )}\n onClick={toggleTextMagnifier}\n >\n {translate(\"textMagnifier\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n readableFont && \"active\",\n classes?.button,\n )}\n onClick={toggleReadableFont}\n >\n Readable Font\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n underlineLinks && \"active\",\n classes?.button,\n )}\n onClick={toggleUnderlineLinks}\n >\n Highlight Links\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n highlightTitles && \"active\",\n classes?.button,\n )}\n onClick={toggleHighlightTitles}\n >\n Highlight Titles\n </button>\n </div>\n </section>\n\n {/* COLOR ADJUSTMENTS */}\n <section className={cn(\"a11y-section\", classes?.section)}>\n <h3 className={cn(\"a11y-section-title\", classes?.title)}>\n Color Adjustments\n </h3>\n\n <div className={cn(\"a11y-grid\", classes?.section)}>\n <button\n className={cn(\n \"a11y-card\",\n highContrast && \"active\",\n classes?.button,\n )}\n onClick={toggleHighContrast}\n >\n {translate(\"highContrast\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n negativeContrast && \"active\",\n classes?.button,\n )}\n onClick={toggleNegativeContrast}\n >\n {translate(\"negativeContrast\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n lightBackground && \"active\",\n classes?.button,\n )}\n onClick={toggleLightBackground}\n >\n {translate(\"lightBackground\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n darkMode && \"active\",\n classes?.button,\n )}\n onClick={toggleDarkMode}\n >\n {translate(\"darkMode\")}\n </button>\n </div>\n </section>\n\n {/* ACCESSIBILITY TOOLS */}\n <section className={cn(\"a11y-section\", classes?.section)}>\n <h3 className={cn(\"a11y-section-title\", classes?.title)}>\n Accessibility Tools\n </h3>\n\n <div className={cn(\"a11y-grid\", classes?.section)}>\n <button\n className={cn(\n \"a11y-card\",\n pauseAnimations && \"active\",\n classes?.button,\n )}\n onClick={togglePauseAnimations}\n >\n {translate(\"pauseAnimations\")}\n </button>\n\n <button\n className={cn(\n \"a11y-card\",\n readingGuide && \"active\",\n classes?.button,\n )}\n onClick={toggleReadingGuide}\n >\n {translate(\"readingGuide\")}\n </button>\n </div>\n </section>\n </div>\n )}\n </div>\n );\n};\n","import React from 'react';\nimport { useAccessibility } from './AccessibilityContext';\nimport { TranslationKey } from './translations';\n\ninterface TProps {\n k: TranslationKey | string;\n children?: React.ReactNode;\n}\n\nexport const T: React.FC<TProps> = ({ k, children }) => {\n const { translate, language } = useAccessibility();\n \n if (children && typeof children === 'string') {\n return <>{children}</>;\n }\n \n return <>{translate(k as TranslationKey)}</>;\n};\n"],"names":["createContext","useState","useEffect","useContext","cn"],"mappings":"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"}
|
package/dist/styles.css
CHANGED
|
@@ -144,6 +144,46 @@ body {
|
|
|
144
144
|
color: #000000 !important;
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
+
.dark-mode,
|
|
148
|
+
.dark-mode body {
|
|
149
|
+
background: #0f172a !important;
|
|
150
|
+
color: #e2e8f0 !important;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.dark-mode .a11y-panel {
|
|
154
|
+
background: linear-gradient(180deg, #111827 0%, #0f172a 100%);
|
|
155
|
+
border-color: #1f2937;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
.dark-mode .a11y-panel-title,
|
|
159
|
+
.dark-mode .a11y-section-title,
|
|
160
|
+
.dark-mode .a11y-language label,
|
|
161
|
+
.dark-mode .a11y-card,
|
|
162
|
+
.dark-mode .a11y-card-title {
|
|
163
|
+
color: #e2e8f0;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
.dark-mode .a11y-section,
|
|
167
|
+
.dark-mode .a11y-language {
|
|
168
|
+
background: linear-gradient(180deg, #1e293b 0%, #0f172a 100%);
|
|
169
|
+
border-color: #334155;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.dark-mode .a11y-card,
|
|
173
|
+
.dark-mode .a11y-language select,
|
|
174
|
+
.dark-mode .accessibility-toolbar button,
|
|
175
|
+
.dark-mode .accessibility-toolbar select,
|
|
176
|
+
.dark-mode .a11y-panel-close {
|
|
177
|
+
background: #111827;
|
|
178
|
+
border-color: #334155;
|
|
179
|
+
color: #e2e8f0;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
.dark-mode .a11y-card:hover,
|
|
183
|
+
.dark-mode .accessibility-toolbar button:hover {
|
|
184
|
+
background: #1f2937;
|
|
185
|
+
}
|
|
186
|
+
|
|
147
187
|
.underline-links a {
|
|
148
188
|
text-decoration-line: underline !important;
|
|
149
189
|
text-decoration-thickness: 1px !important;
|
package/dist/translations.d.ts
CHANGED
|
@@ -7,12 +7,12 @@ export declare const translations: {
|
|
|
7
7
|
highContrast: string;
|
|
8
8
|
negativeContrast: string;
|
|
9
9
|
lightBackground: string;
|
|
10
|
+
darkMode: string;
|
|
10
11
|
underlineLinks: string;
|
|
11
12
|
highlightTitles: string;
|
|
12
13
|
readableFont: string;
|
|
13
14
|
pauseAnimations: string;
|
|
14
15
|
readingGuide: string;
|
|
15
|
-
voiceCommand: string;
|
|
16
16
|
readAloud: string;
|
|
17
17
|
colorBlindMode: string;
|
|
18
18
|
focusIndicator: string;
|
|
@@ -25,12 +25,12 @@ export declare const translations: {
|
|
|
25
25
|
highContrast: string;
|
|
26
26
|
negativeContrast: string;
|
|
27
27
|
lightBackground: string;
|
|
28
|
+
darkMode: string;
|
|
28
29
|
underlineLinks: string;
|
|
29
30
|
highlightTitles: string;
|
|
30
31
|
readableFont: string;
|
|
31
32
|
pauseAnimations: string;
|
|
32
33
|
readingGuide: string;
|
|
33
|
-
voiceCommand: string;
|
|
34
34
|
readAloud: string;
|
|
35
35
|
colorBlindMode: string;
|
|
36
36
|
focusIndicator: string;
|
|
@@ -43,12 +43,12 @@ export declare const translations: {
|
|
|
43
43
|
highContrast: string;
|
|
44
44
|
negativeContrast: string;
|
|
45
45
|
lightBackground: string;
|
|
46
|
+
darkMode: string;
|
|
46
47
|
underlineLinks: string;
|
|
47
48
|
highlightTitles: string;
|
|
48
49
|
readableFont: string;
|
|
49
50
|
pauseAnimations: string;
|
|
50
51
|
readingGuide: string;
|
|
51
|
-
voiceCommand: string;
|
|
52
52
|
readAloud: string;
|
|
53
53
|
colorBlindMode: string;
|
|
54
54
|
focusIndicator: string;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ngp-accessibility",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "React accessibility package with translation, text sizing, contrast modes, and
|
|
3
|
+
"version": "1.0.8",
|
|
4
|
+
"description": "React accessibility package with translation, text sizing, contrast modes, and more",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "National Government Portal"
|
|
7
7
|
},
|
|
@@ -19,8 +19,7 @@
|
|
|
19
19
|
"react",
|
|
20
20
|
"accessibility",
|
|
21
21
|
"a11y",
|
|
22
|
-
"translation"
|
|
23
|
-
"voice-command"
|
|
22
|
+
"translation"
|
|
24
23
|
],
|
|
25
24
|
"peerDependencies": {
|
|
26
25
|
"react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0",
|