ngp-accessibility 1.0.3 → 1.0.5
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/dist/AccessibilityContext.d.ts +8 -0
- package/dist/AccessibilityDropdown.d.ts +11 -14
- package/dist/index.esm.js +296 -49
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +296 -49
- package/dist/index.js.map +1 -1
- package/dist/styles.css +434 -1
- package/dist/translations.d.ts +12 -0
- package/package.json +4 -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 increaseText: 'Increase Text',\n decreaseText: 'Decrease Text',\n highContrast: 'High Contrast',\n negativeContrast: 'Negative Contrast',\n lightBackground: 'Light Background',\n underlineLinks: 'Underline Links',\n readableFont: 'Readable Font',\n voiceCommand: 'Voice Command',\n },\n tl: {\n increaseText: 'Palakihin ang Teksto',\n decreaseText: 'Paliitin ang Teksto',\n highContrast: 'Mataas na Contrast',\n negativeContrast: 'Negatibong Contrast',\n lightBackground: 'Maliwanag na Background',\n underlineLinks: 'May Guhit na Links',\n readableFont: 'Madaling Basahin na Font',\n voiceCommand: 'Voice Command',\n },\n ceb: {\n increaseText: 'Padak-on ang Teksto',\n decreaseText: 'Pagamay-on ang Teksto',\n highContrast: 'Taas nga Contrast',\n negativeContrast: 'Negatibo nga Contrast',\n lightBackground: 'Hayag nga Background',\n underlineLinks: 'Linya sa Ubos sa Links',\n readableFont: 'Sayon Basahon nga Font',\n voiceCommand: 'Voice Command',\n },\n};\n\nexport type Language = keyof typeof translations;\nexport type TranslationKey = keyof typeof translations.en;\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n ReactNode,\n} from \"react\";\nimport { Language, translations, TranslationKey } from \"./translations\";\n\ninterface AccessibilityState {\n language: Language;\n textSize: number;\n highContrast: boolean;\n negativeContrast: boolean;\n lightBackground: boolean;\n underlineLinks: boolean;\n readableFont: boolean;\n voiceEnabled: boolean;\n}\n\ninterface AccessibilityContextType extends AccessibilityState {\n setLanguage: (lang: Language) => void;\n increaseText: () => void;\n decreaseText: () => void;\n toggleHighContrast: () => void;\n toggleNegativeContrast: () => void;\n toggleLightBackground: () => void;\n toggleUnderlineLinks: () => void;\n toggleReadableFont: () => void;\n toggleVoice: () => void;\n translate: (key: TranslationKey) => string;\n t: (key: string) => string;\n}\n\nconst AccessibilityContext = createContext<\n AccessibilityContextType | undefined\n>(undefined);\n\ninterface AccessibilityProviderProps {\n children: ReactNode;\n translations?: Partial<Record<Language, Record<string, string>>>;\n}\n\nexport const AccessibilityProvider: React.FC<AccessibilityProviderProps> = ({\n children,\n translations: customTranslations,\n}) => {\n const [state, setState] = useState<AccessibilityState>({\n language: \"en\",\n textSize: 100,\n highContrast: false,\n negativeContrast: false,\n lightBackground: false,\n underlineLinks: false,\n readableFont: false,\n voiceEnabled: false,\n });\n\n const allTranslations: Partial<Record<Language, Record<string, string>>> =\n customTranslations || translations;\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(\"readable-font\", state.readableFont);\n }, [state]);\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(\"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 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 toggleReadableFont = () =>\n setState((s) => ({ ...s, readableFont: !s.readableFont }));\n const toggleVoice = () =>\n setState((s) => ({ ...s, voiceEnabled: !s.voiceEnabled }));\n const translate = (key: TranslationKey) => translations[state.language][key];\n const t = (key: string) => allTranslations[state.language]?.[key] || key;\n\n return (\n <AccessibilityContext.Provider\n value={{\n ...state,\n setLanguage,\n increaseText,\n decreaseText,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleUnderlineLinks,\n toggleReadableFont,\n toggleVoice,\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\";\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 toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleUnderlineLinks,\n toggleReadableFont,\n toggleVoice,\n translate,\n highContrast,\n negativeContrast,\n lightBackground,\n underlineLinks,\n readableFont,\n voiceEnabled,\n } = useAccessibility();\n\n return (\n <div\n className={cn(\"accessibility-toolbar\", classes?.root, className)}\n style={style}\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 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 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 classes?.voiceButton,\n voiceEnabled && \"active\",\n voiceEnabled && classes?.activeButton,\n )}\n data-active={voiceEnabled}\n onClick={toggleVoice}\n >\n 🎤 {translate(\"voiceCommand\")}\n </button>\n </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { useAccessibility } from \"./AccessibilityContext\";\n\nexport interface AccessibilityDropdownClasses {\n root?: string;\n toggle?: string;\n menu?: string;\n section?: string;\n label?: string;\n select?: string;\n button?: string;\n activeButton?: string;\n voiceButton?: string;\n}\n\nexport interface AccessibilityDropdownProps {\n className?: string;\n style?: React.CSSProperties;\n classes?: AccessibilityDropdownClasses;\n triggerLabel?: React.ReactNode;\n renderTrigger?: (params: {\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 const AccessibilityDropdown: React.FC<AccessibilityDropdownProps> = ({\n className,\n style,\n classes,\n triggerLabel = \"♿ Accessibility\",\n renderTrigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const {\n language,\n setLanguage,\n increaseText,\n decreaseText,\n toggleHighContrast,\n toggleNegativeContrast,\n toggleLightBackground,\n toggleUnderlineLinks,\n toggleReadableFont,\n toggleVoice,\n translate,\n highContrast,\n negativeContrast,\n lightBackground,\n underlineLinks,\n readableFont,\n voiceEnabled,\n } = useAccessibility();\n\n const toggle = () => setIsOpen(!isOpen);\n\n return (\n <div\n className={cn(\"accessibility-dropdown\", classes?.root, className)}\n style={style}\n >\n {renderTrigger ? (\n renderTrigger({\n isOpen,\n toggle,\n className: cn(\"accessibility-dropdown-toggle\", classes?.toggle),\n })\n ) : (\n <button\n className={cn(\"accessibility-dropdown-toggle\", classes?.toggle)}\n onClick={toggle}\n >\n {triggerLabel}\n </button>\n )}\n\n {isOpen && (\n <div className={cn(\"accessibility-dropdown-menu\", classes?.menu)}>\n <div\n className={cn(\"accessibility-dropdown-section\", classes?.section)}\n >\n <label className={cn(classes?.label)}>Language:</label>\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 </div>\n\n <div\n className={cn(\"accessibility-dropdown-section\", classes?.section)}\n >\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 </div>\n\n <div\n className={cn(\"accessibility-dropdown-section\", classes?.section)}\n >\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 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 classes?.voiceButton,\n voiceEnabled && \"active\",\n voiceEnabled && classes?.activeButton,\n )}\n data-active={voiceEnabled}\n onClick={toggleVoice}\n >\n 🎤 {translate(\"voiceCommand\")}\n </button>\n </div>\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 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 },\n tl: {\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 },\n ceb: {\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 },\n};\n\nexport type Language = keyof typeof translations;\nexport type TranslationKey = keyof typeof translations.en;\n","import React, {\n createContext,\n useContext,\n useState,\n useEffect,\n ReactNode,\n} from \"react\";\nimport { Language, translations, TranslationKey } from \"./translations\";\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\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}\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 translate: (key: TranslationKey) => string;\n t: (key: string) => string;\n}\n\nconst AccessibilityContext = createContext<\n AccessibilityContextType | undefined\n>(undefined);\n\ninterface AccessibilityProviderProps {\n children: ReactNode;\n translations?: Partial<Record<Language, Record<string, string>>>;\n}\n\nexport const AccessibilityProvider: React.FC<AccessibilityProviderProps> = ({\n children,\n translations: customTranslations,\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 });\n\n const allTranslations: Partial<Record<Language, Record<string, string>>> =\n customTranslations || translations;\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 }, [state]);\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 translate = (key: TranslationKey) => translations[state.language][key];\n const t = (key: string) => allTranslations[state.language]?.[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 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\";\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 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 return (\n <div\n className={cn(\"accessibility-toolbar\", classes?.root, className)}\n style={style}\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 </div>\n );\n};\n","import React, { useState } from \"react\";\nimport { useAccessibility } from \"./AccessibilityContext\";\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=\"a11y-panel-title\">Accessibility Options</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=\"a11y-language\">\n <label htmlFor=\"a11y-language-select\">Language</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 </select>\n </div>\n\n {/* CONTENT ADJUSTMENTS */}\n <section className=\"a11y-section\">\n <h3 className=\"a11y-section-title\">Content Adjustments</h3>\n <div className=\"a11y-card\">\n <span className=\"a11y-card-title\">Content Scaling</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=\"a11y-grid\">\n <button\n className={cn(\"a11y-card\", textMagnifier && \"active\")}\n onClick={toggleTextMagnifier}\n >\n {translate(\"textMagnifier\")}\n </button>\n\n <button\n className={cn(\"a11y-card\", readableFont && \"active\")}\n onClick={toggleReadableFont}\n >\n Readable Font\n </button>\n\n <button\n className={cn(\"a11y-card\", underlineLinks && \"active\")}\n onClick={toggleUnderlineLinks}\n >\n Highlight Links\n </button>\n\n <button\n className={cn(\"a11y-card\", highlightTitles && \"active\")}\n onClick={toggleHighlightTitles}\n >\n Highlight Titles\n </button>\n </div>\n </section>\n\n {/* COLOR ADJUSTMENTS */}\n <section className=\"a11y-section\">\n <h3 className=\"a11y-section-title\">Color Adjustments</h3>\n\n <div className=\"a11y-grid\">\n <button\n className={cn(\"a11y-card\", highContrast && \"active\")}\n onClick={toggleHighContrast}\n >\n {translate(\"highContrast\")}\n </button>\n\n <button\n className={cn(\"a11y-card\", negativeContrast && \"active\")}\n onClick={toggleNegativeContrast}\n >\n {translate(\"negativeContrast\")}\n </button>\n\n <button\n className={cn(\"a11y-card\", lightBackground && \"active\")}\n onClick={toggleLightBackground}\n >\n {translate(\"lightBackground\")}\n </button>\n </div>\n </section>\n\n {/* ACCESSIBILITY TOOLS */}\n <section className=\"a11y-section\">\n <h3 className=\"a11y-section-title\">Accessibility Tools</h3>\n\n <div className=\"a11y-grid\">\n <button\n className={cn(\"a11y-card\", pauseAnimations && \"active\")}\n onClick={togglePauseAnimations}\n >\n {translate(\"pauseAnimations\")}\n </button>\n\n <button\n className={cn(\"a11y-card\", readingGuide && \"active\")}\n onClick={toggleReadingGuide}\n >\n {translate(\"readingGuide\")}\n </button>\n\n <button\n className={cn(\"a11y-card\", voiceEnabled && \"active\")}\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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"}
|
package/dist/styles.css
CHANGED
|
@@ -134,7 +134,126 @@
|
|
|
134
134
|
}
|
|
135
135
|
|
|
136
136
|
.underline-links a {
|
|
137
|
-
text-decoration: underline !important;
|
|
137
|
+
text-decoration-line: underline !important;
|
|
138
|
+
text-decoration-thickness: 1px !important;
|
|
139
|
+
text-underline-offset: 0.2em;
|
|
140
|
+
font-weight: 700;
|
|
141
|
+
border: 2px solid #3f81f4;
|
|
142
|
+
border-radius: 4px;
|
|
143
|
+
box-shadow: inset 0 -0.2em 0 rgba(96, 165, 250, 0.24);
|
|
144
|
+
transition:
|
|
145
|
+
background 0.2s ease,
|
|
146
|
+
box-shadow 0.2s ease,
|
|
147
|
+
color 0.2s ease;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
.underline-links a:hover {
|
|
151
|
+
background: rgba(37, 99, 235, 0.2);
|
|
152
|
+
box-shadow: inset 0 -0.28em 0 rgba(96, 165, 250, 0.32);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
.highlight-titles :is(h1, h2, h3, h4, h5, h6, [role="heading"]) {
|
|
156
|
+
border: 2px solid #2563eb !important;
|
|
157
|
+
border-radius: 10px;
|
|
158
|
+
padding: 0.18em 0.45em;
|
|
159
|
+
background: rgba(37, 99, 235, 0.08);
|
|
160
|
+
box-shadow: 0 8px 20px rgba(37, 99, 235, 0.12);
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
.highlight-titles .a11y-root :is(h1, h2, h3, h4, h5, h6, [role="heading"]) {
|
|
164
|
+
border: none !important;
|
|
165
|
+
border-radius: 0;
|
|
166
|
+
padding: 0;
|
|
167
|
+
background: transparent;
|
|
168
|
+
box-shadow: none;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.pause-animations,
|
|
172
|
+
.pause-animations body {
|
|
173
|
+
scroll-behavior: auto !important;
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.pause-animations *:not(.a11y-root):not(.a11y-root *) {
|
|
177
|
+
animation-duration: 0.01ms !important;
|
|
178
|
+
animation-delay: 0ms !important;
|
|
179
|
+
animation-iteration-count: 1 !important;
|
|
180
|
+
transition-duration: 0.01ms !important;
|
|
181
|
+
transition-delay: 0ms !important;
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
.a11y-reading-guide {
|
|
185
|
+
position: fixed;
|
|
186
|
+
inset: 0;
|
|
187
|
+
z-index: 900;
|
|
188
|
+
pointer-events: none;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.a11y-reading-guide-top,
|
|
192
|
+
.a11y-reading-guide-bottom {
|
|
193
|
+
position: absolute;
|
|
194
|
+
left: 0;
|
|
195
|
+
width: 100%;
|
|
196
|
+
background: rgba(15, 23, 42, 0.22);
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
.a11y-reading-guide-top {
|
|
200
|
+
top: 0;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
.a11y-reading-guide-bottom {
|
|
204
|
+
bottom: 0;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
.a11y-reading-guide-focus {
|
|
208
|
+
position: absolute;
|
|
209
|
+
left: 0;
|
|
210
|
+
width: 100%;
|
|
211
|
+
border-top: 1px solid rgba(96, 165, 250, 0.35);
|
|
212
|
+
border-bottom: 1px solid rgba(96, 165, 250, 0.35);
|
|
213
|
+
background: linear-gradient(
|
|
214
|
+
180deg,
|
|
215
|
+
rgba(255, 255, 255, 0.18) 0%,
|
|
216
|
+
rgba(255, 255, 255, 0.06) 100%
|
|
217
|
+
);
|
|
218
|
+
box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.05) inset;
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
.a11y-reading-guide-line {
|
|
222
|
+
position: absolute;
|
|
223
|
+
left: 0;
|
|
224
|
+
width: 100%;
|
|
225
|
+
height: 2px;
|
|
226
|
+
margin-top: -1px;
|
|
227
|
+
background: rgba(150, 150, 150, 0.9);
|
|
228
|
+
box-shadow: 0 0 18px rgba(59, 130, 246, 0.45);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
.a11y-text-magnifier-tooltip {
|
|
232
|
+
position: fixed;
|
|
233
|
+
top: 0;
|
|
234
|
+
left: 0;
|
|
235
|
+
z-index: 3000;
|
|
236
|
+
max-width: min(360px, calc(100vw - 24px));
|
|
237
|
+
padding: 12px 14px;
|
|
238
|
+
border-radius: 12px;
|
|
239
|
+
background: rgba(0, 0, 0, 0.6);
|
|
240
|
+
color: #ffffff;
|
|
241
|
+
font-size: 20px;
|
|
242
|
+
font-weight: 600;
|
|
243
|
+
line-height: 1.35;
|
|
244
|
+
pointer-events: none;
|
|
245
|
+
opacity: 0;
|
|
246
|
+
transform: translateY(4px);
|
|
247
|
+
transition:
|
|
248
|
+
opacity 0.14s ease,
|
|
249
|
+
transform 0.14s ease;
|
|
250
|
+
box-shadow: 0 16px 32px rgba(15, 23, 42, 0.24);
|
|
251
|
+
backdrop-filter: blur(8px);
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.a11y-text-magnifier-tooltip[data-visible="true"] {
|
|
255
|
+
opacity: 1;
|
|
256
|
+
transform: translateY(0);
|
|
138
257
|
}
|
|
139
258
|
|
|
140
259
|
.readable-font,
|
|
@@ -143,3 +262,317 @@
|
|
|
143
262
|
letter-spacing: 0.05em !important;
|
|
144
263
|
line-height: 1.6 !important;
|
|
145
264
|
}
|
|
265
|
+
.a11y-root {
|
|
266
|
+
position: relative;
|
|
267
|
+
display: inline-flex;
|
|
268
|
+
flex-direction: column;
|
|
269
|
+
z-index: 1200;
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
.a11y-trigger {
|
|
273
|
+
display: inline-flex;
|
|
274
|
+
align-items: center;
|
|
275
|
+
justify-content: center;
|
|
276
|
+
gap: 8px;
|
|
277
|
+
min-height: 44px;
|
|
278
|
+
padding: 12px 18px;
|
|
279
|
+
border: 1px solid #bfdbfe;
|
|
280
|
+
border-radius: 14px;
|
|
281
|
+
color: #000000;
|
|
282
|
+
cursor: pointer;
|
|
283
|
+
font-size: 14px;
|
|
284
|
+
font-weight: 700;
|
|
285
|
+
letter-spacing: -0.01em;
|
|
286
|
+
box-shadow: 0 10px 24px rgba(59, 130, 246, 0.16);
|
|
287
|
+
transition:
|
|
288
|
+
background 0.2s ease,
|
|
289
|
+
border-color 0.2s ease,
|
|
290
|
+
box-shadow 0.2s ease,
|
|
291
|
+
transform 0.2s ease;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
.a11y-trigger:hover {
|
|
295
|
+
transform: translateY(-1px);
|
|
296
|
+
box-shadow: 0 14px 28px rgba(59, 130, 246, 0.2);
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
.a11y-trigger:focus-visible {
|
|
300
|
+
outline: 3px solid rgba(37, 99, 235, 0.22);
|
|
301
|
+
outline-offset: 2px;
|
|
302
|
+
}
|
|
303
|
+
.a11y-panel {
|
|
304
|
+
width: 420px;
|
|
305
|
+
overflow-y: scroll;
|
|
306
|
+
background: linear-gradient(180deg, #ffffff 0%, #f7fafc 100%);
|
|
307
|
+
border: 1px solid #d9e2ec;
|
|
308
|
+
border-radius: 20px;
|
|
309
|
+
padding: 20px;
|
|
310
|
+
box-shadow: 0 24px 48px rgba(15, 23, 42, 0.16);
|
|
311
|
+
position: absolute;
|
|
312
|
+
right: 0;
|
|
313
|
+
min-width: 200px;
|
|
314
|
+
display: flex;
|
|
315
|
+
flex-direction: column;
|
|
316
|
+
gap: 16px;
|
|
317
|
+
height: 420px;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
.a11y-panel-header {
|
|
321
|
+
display: flex;
|
|
322
|
+
align-items: flex-start;
|
|
323
|
+
justify-content: space-between;
|
|
324
|
+
gap: 16px;
|
|
325
|
+
padding: 4px 4px 12px;
|
|
326
|
+
border-bottom: 1px solid #e2e8f0;
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
.a11y-panel-heading {
|
|
330
|
+
display: flex;
|
|
331
|
+
flex-direction: column;
|
|
332
|
+
gap: 4px;
|
|
333
|
+
}
|
|
334
|
+
|
|
335
|
+
.a11y-panel-eyebrow {
|
|
336
|
+
font-size: 11px;
|
|
337
|
+
font-weight: 700;
|
|
338
|
+
letter-spacing: 0.12em;
|
|
339
|
+
text-transform: uppercase;
|
|
340
|
+
color: #2563eb;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
.a11y-panel-title {
|
|
344
|
+
font-size: 20px;
|
|
345
|
+
font-weight: 700;
|
|
346
|
+
color: #0f172a;
|
|
347
|
+
line-height: 1.2;
|
|
348
|
+
}
|
|
349
|
+
|
|
350
|
+
.a11y-panel-close {
|
|
351
|
+
width: 38px;
|
|
352
|
+
height: 38px;
|
|
353
|
+
flex-shrink: 0;
|
|
354
|
+
border: 1px solid #cbd5e1;
|
|
355
|
+
border-radius: 999px;
|
|
356
|
+
background: #ffffff;
|
|
357
|
+
color: #334155;
|
|
358
|
+
cursor: pointer;
|
|
359
|
+
font-size: 22px;
|
|
360
|
+
line-height: 1;
|
|
361
|
+
transition:
|
|
362
|
+
background 0.2s ease,
|
|
363
|
+
color 0.2s ease,
|
|
364
|
+
border-color 0.2s ease,
|
|
365
|
+
transform 0.2s ease;
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
.a11y-panel-close:hover {
|
|
369
|
+
background: #eff6ff;
|
|
370
|
+
color: #1d4ed8;
|
|
371
|
+
border-color: #93c5fd;
|
|
372
|
+
transform: rotate(90deg);
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
.a11y-panel-close:focus-visible {
|
|
376
|
+
outline: 3px solid rgba(37, 99, 235, 0.2);
|
|
377
|
+
outline-offset: 2px;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
.a11y-panel button,
|
|
381
|
+
.a11y-panel select {
|
|
382
|
+
font-family: inherit;
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
.a11y-section {
|
|
386
|
+
display: flex;
|
|
387
|
+
flex-direction: column;
|
|
388
|
+
gap: 14px;
|
|
389
|
+
background: linear-gradient(180deg, #f8fbff 0%, #eff6ff 100%);
|
|
390
|
+
border: 1px solid #dbeafe;
|
|
391
|
+
border-radius: 16px;
|
|
392
|
+
padding: 18px;
|
|
393
|
+
}
|
|
394
|
+
|
|
395
|
+
.a11y-section-title {
|
|
396
|
+
font-size: 16px;
|
|
397
|
+
font-weight: 700;
|
|
398
|
+
margin: 0;
|
|
399
|
+
color: #1e3a8a;
|
|
400
|
+
letter-spacing: -0.01em;
|
|
401
|
+
}
|
|
402
|
+
|
|
403
|
+
.a11y-grid {
|
|
404
|
+
display: grid;
|
|
405
|
+
grid-template-columns: repeat(2, 1fr);
|
|
406
|
+
gap: 14px;
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
.a11y-card {
|
|
410
|
+
appearance: none;
|
|
411
|
+
display: flex;
|
|
412
|
+
flex-direction: column;
|
|
413
|
+
justify-content: center;
|
|
414
|
+
align-items: center;
|
|
415
|
+
gap: 12px;
|
|
416
|
+
min-height: 84px;
|
|
417
|
+
background: #ffffff;
|
|
418
|
+
color: #0f172a;
|
|
419
|
+
border-radius: 14px;
|
|
420
|
+
padding: 16px;
|
|
421
|
+
border: 1px solid #d6e4f5;
|
|
422
|
+
cursor: pointer;
|
|
423
|
+
text-align: left;
|
|
424
|
+
box-shadow: 0 10px 24px rgba(148, 163, 184, 0.12);
|
|
425
|
+
transition:
|
|
426
|
+
border-color 0.2s ease,
|
|
427
|
+
background 0.2s ease,
|
|
428
|
+
box-shadow 0.2s ease,
|
|
429
|
+
transform 0.2s ease;
|
|
430
|
+
font-size: 14px;
|
|
431
|
+
font-weight: 600;
|
|
432
|
+
line-height: 1.35;
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
.a11y-card:hover {
|
|
436
|
+
background: #f8fbff;
|
|
437
|
+
border-color: #93c5fd;
|
|
438
|
+
transform: translateY(-4px);
|
|
439
|
+
box-shadow: 0 14px 28px rgba(59, 130, 246, 0.14);
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
.a11y-card.active {
|
|
443
|
+
background: linear-gradient(180deg, #2563eb 0%, #1d4ed8 100%);
|
|
444
|
+
color: #ffffff;
|
|
445
|
+
border-color: #1d4ed8;
|
|
446
|
+
box-shadow: 0 16px 30px rgba(37, 99, 235, 0.28);
|
|
447
|
+
}
|
|
448
|
+
|
|
449
|
+
.a11y-card:focus-visible {
|
|
450
|
+
outline: 3px solid rgba(37, 99, 235, 0.22);
|
|
451
|
+
outline-offset: 2px;
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
.a11y-card.active:hover {
|
|
455
|
+
background: linear-gradient(180deg, #1d4ed8 0%, #1e40af 100%);
|
|
456
|
+
border-color: #1e40af;
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
.a11y-card-title {
|
|
460
|
+
font-size: 14px;
|
|
461
|
+
font-weight: 700;
|
|
462
|
+
color: inherit;
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
.a11y-stepper {
|
|
466
|
+
display: flex;
|
|
467
|
+
align-items: center;
|
|
468
|
+
justify-content: space-between;
|
|
469
|
+
gap: 10px;
|
|
470
|
+
width: 100%;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
.a11y-stepper button {
|
|
474
|
+
width: 34px;
|
|
475
|
+
height: 34px;
|
|
476
|
+
border-radius: 50%;
|
|
477
|
+
border: 1px solid #bfdbfe;
|
|
478
|
+
background: linear-gradient(180deg, #eff6ff 0%, #dbeafe 100%);
|
|
479
|
+
color: #1d4ed8;
|
|
480
|
+
font-size: 18px;
|
|
481
|
+
font-weight: 700;
|
|
482
|
+
cursor: pointer;
|
|
483
|
+
transition:
|
|
484
|
+
background 0.2s ease,
|
|
485
|
+
border-color 0.2s ease,
|
|
486
|
+
color 0.2s ease,
|
|
487
|
+
transform 0.2s ease;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
.a11y-stepper button:hover {
|
|
491
|
+
background: linear-gradient(180deg, #dbeafe 0%, #bfdbfe 100%);
|
|
492
|
+
border-color: #93c5fd;
|
|
493
|
+
color: #1e3a8a;
|
|
494
|
+
transform: scale(1.04);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
.a11y-stepper button:focus-visible {
|
|
498
|
+
outline: 3px solid rgba(37, 99, 235, 0.22);
|
|
499
|
+
outline-offset: 2px;
|
|
500
|
+
}
|
|
501
|
+
|
|
502
|
+
.a11y-stepper-value {
|
|
503
|
+
flex: 1;
|
|
504
|
+
text-align: center;
|
|
505
|
+
font-size: 13px;
|
|
506
|
+
font-weight: 700;
|
|
507
|
+
color: inherit;
|
|
508
|
+
padding: 8px 10px;
|
|
509
|
+
border-radius: 999px;
|
|
510
|
+
background: rgba(37, 99, 235, 0.08);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
.a11y-card.active .a11y-stepper-value {
|
|
514
|
+
background: rgba(255, 255, 255, 0.16);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
.a11y-card.active .a11y-stepper button {
|
|
518
|
+
border-color: rgba(255, 255, 255, 0.34);
|
|
519
|
+
background: rgba(255, 255, 255, 0.16);
|
|
520
|
+
color: #ffffff;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.a11y-card.active .a11y-stepper button:hover {
|
|
524
|
+
background: rgba(255, 255, 255, 0.24);
|
|
525
|
+
border-color: rgba(255, 255, 255, 0.48);
|
|
526
|
+
color: #ffffff;
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
.a11y-language {
|
|
530
|
+
display: flex;
|
|
531
|
+
justify-content: space-between;
|
|
532
|
+
align-items: center;
|
|
533
|
+
gap: 16px;
|
|
534
|
+
background: #eef4ff;
|
|
535
|
+
border: 1px solid #cfe0ff;
|
|
536
|
+
border-radius: 16px;
|
|
537
|
+
padding: 14px 16px;
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
.a11y-language label {
|
|
541
|
+
font-size: 14px;
|
|
542
|
+
font-weight: 600;
|
|
543
|
+
color: #1e3a8a;
|
|
544
|
+
}
|
|
545
|
+
|
|
546
|
+
.a11y-language select {
|
|
547
|
+
padding: 8px 12px;
|
|
548
|
+
border-radius: 10px;
|
|
549
|
+
border: 1px solid #bfd3f2;
|
|
550
|
+
background: #ffffff;
|
|
551
|
+
color: #0f172a;
|
|
552
|
+
cursor: pointer;
|
|
553
|
+
transition:
|
|
554
|
+
border-color 0.2s ease,
|
|
555
|
+
box-shadow 0.2s ease;
|
|
556
|
+
}
|
|
557
|
+
|
|
558
|
+
.a11y-language select:focus-visible {
|
|
559
|
+
outline: none;
|
|
560
|
+
border-color: #60a5fa;
|
|
561
|
+
box-shadow: 0 0 0 4px rgba(96, 165, 250, 0.18);
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
@media (max-width: 640px) {
|
|
565
|
+
.a11y-panel {
|
|
566
|
+
width: min(100vw - 24px, 300px);
|
|
567
|
+
right: 0;
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
.a11y-grid {
|
|
571
|
+
grid-template-columns: 1fr;
|
|
572
|
+
}
|
|
573
|
+
|
|
574
|
+
.a11y-language {
|
|
575
|
+
flex-direction: column;
|
|
576
|
+
align-items: stretch;
|
|
577
|
+
}
|
|
578
|
+
}
|