@bauer-group/accessibility-widget 1.0.3
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/LICENSE +21 -0
- package/README.md +259 -0
- package/dist/accessibility-widget-core.min.js +6 -0
- package/dist/accessibility-widget-core.min.js.map +7 -0
- package/dist/accessibility-widget-loader.min.js +14 -0
- package/dist/accessibility-widget-loader.min.js.map +7 -0
- package/dist/accessibility-widget.min.css +7 -0
- package/dist/accessibility-widget.min.css.map +7 -0
- package/dist/config.d.ts +33 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/core.d.ts +31 -0
- package/dist/core.d.ts.map +1 -0
- package/dist/features/apply.d.ts +3 -0
- package/dist/features/apply.d.ts.map +1 -0
- package/dist/features/profile.d.ts +3 -0
- package/dist/features/profile.d.ts.map +1 -0
- package/dist/features/reading-guide.d.ts +2 -0
- package/dist/features/reading-guide.d.ts.map +1 -0
- package/dist/features/reading-mask.d.ts +2 -0
- package/dist/features/reading-mask.d.ts.map +1 -0
- package/dist/features/structure-nav.d.ts +2 -0
- package/dist/features/structure-nav.d.ts.map +1 -0
- package/dist/features/tts.d.ts +7 -0
- package/dist/features/tts.d.ts.map +1 -0
- package/dist/focus-trap.d.ts +6 -0
- package/dist/focus-trap.d.ts.map +1 -0
- package/dist/i18n/ar.d.ts +3 -0
- package/dist/i18n/ar.d.ts.map +1 -0
- package/dist/i18n/bn.d.ts +3 -0
- package/dist/i18n/bn.d.ts.map +1 -0
- package/dist/i18n/cs.d.ts +3 -0
- package/dist/i18n/cs.d.ts.map +1 -0
- package/dist/i18n/de.d.ts +3 -0
- package/dist/i18n/de.d.ts.map +1 -0
- package/dist/i18n/el.d.ts +3 -0
- package/dist/i18n/el.d.ts.map +1 -0
- package/dist/i18n/en.d.ts +3 -0
- package/dist/i18n/en.d.ts.map +1 -0
- package/dist/i18n/es.d.ts +3 -0
- package/dist/i18n/es.d.ts.map +1 -0
- package/dist/i18n/fa.d.ts +3 -0
- package/dist/i18n/fa.d.ts.map +1 -0
- package/dist/i18n/fr.d.ts +3 -0
- package/dist/i18n/fr.d.ts.map +1 -0
- package/dist/i18n/he.d.ts +3 -0
- package/dist/i18n/he.d.ts.map +1 -0
- package/dist/i18n/hi.d.ts +3 -0
- package/dist/i18n/hi.d.ts.map +1 -0
- package/dist/i18n/hu.d.ts +3 -0
- package/dist/i18n/hu.d.ts.map +1 -0
- package/dist/i18n/id.d.ts +3 -0
- package/dist/i18n/id.d.ts.map +1 -0
- package/dist/i18n/index.d.ts +6 -0
- package/dist/i18n/index.d.ts.map +1 -0
- package/dist/i18n/it.d.ts +3 -0
- package/dist/i18n/it.d.ts.map +1 -0
- package/dist/i18n/ja.d.ts +3 -0
- package/dist/i18n/ja.d.ts.map +1 -0
- package/dist/i18n/ko.d.ts +3 -0
- package/dist/i18n/ko.d.ts.map +1 -0
- package/dist/i18n/nl.d.ts +3 -0
- package/dist/i18n/nl.d.ts.map +1 -0
- package/dist/i18n/pl.d.ts +3 -0
- package/dist/i18n/pl.d.ts.map +1 -0
- package/dist/i18n/pt.d.ts +3 -0
- package/dist/i18n/pt.d.ts.map +1 -0
- package/dist/i18n/ro.d.ts +3 -0
- package/dist/i18n/ro.d.ts.map +1 -0
- package/dist/i18n/ru.d.ts +3 -0
- package/dist/i18n/ru.d.ts.map +1 -0
- package/dist/i18n/sv.d.ts +3 -0
- package/dist/i18n/sv.d.ts.map +1 -0
- package/dist/i18n/th.d.ts +3 -0
- package/dist/i18n/th.d.ts.map +1 -0
- package/dist/i18n/tr.d.ts +3 -0
- package/dist/i18n/tr.d.ts.map +1 -0
- package/dist/i18n/types.d.ts +44 -0
- package/dist/i18n/types.d.ts.map +1 -0
- package/dist/i18n/uk.d.ts +3 -0
- package/dist/i18n/uk.d.ts.map +1 -0
- package/dist/i18n/ur.d.ts +3 -0
- package/dist/i18n/ur.d.ts.map +1 -0
- package/dist/i18n/vi.d.ts +3 -0
- package/dist/i18n/vi.d.ts.map +1 -0
- package/dist/i18n/zh.d.ts +3 -0
- package/dist/i18n/zh.d.ts.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/integrity.json +9 -0
- package/dist/integrity.txt +12 -0
- package/dist/loader.d.ts +2 -0
- package/dist/loader.d.ts.map +1 -0
- package/dist/panel/drag.d.ts +34 -0
- package/dist/panel/drag.d.ts.map +1 -0
- package/dist/panel/panel.d.ts +23 -0
- package/dist/panel/panel.d.ts.map +1 -0
- package/dist/state.d.ts +18 -0
- package/dist/state.d.ts.map +1 -0
- package/dist/styles/critical.d.ts +16 -0
- package/dist/styles/critical.d.ts.map +1 -0
- package/dist/types/index.d.ts +3 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/locale.d.ts +11 -0
- package/dist/types/locale.d.ts.map +1 -0
- package/dist/types/widget.d.ts +207 -0
- package/dist/types/widget.d.ts.map +1 -0
- package/dist/util/debug.d.ts +8 -0
- package/dist/util/debug.d.ts.map +1 -0
- package/dist/util/dom.d.ts +19 -0
- package/dist/util/dom.d.ts.map +1 -0
- package/dist/util/events.d.ts +38 -0
- package/dist/util/events.d.ts.map +1 -0
- package/dist/util/feature-icons.d.ts +33 -0
- package/dist/util/feature-icons.d.ts.map +1 -0
- package/dist/util/language-names.d.ts +12 -0
- package/dist/util/language-names.d.ts.map +1 -0
- package/dist/util/svg.d.ts +38 -0
- package/dist/util/svg.d.ts.map +1 -0
- package/package.json +67 -0
- package/src/config.ts +213 -0
- package/src/core.ts +173 -0
- package/src/features/apply.ts +37 -0
- package/src/features/profile.ts +18 -0
- package/src/features/reading-guide.ts +25 -0
- package/src/features/reading-mask.ts +25 -0
- package/src/features/structure-nav.ts +43 -0
- package/src/features/tts.ts +73 -0
- package/src/focus-trap.ts +35 -0
- package/src/globals.d.ts +63 -0
- package/src/i18n/ar.ts +48 -0
- package/src/i18n/bn.ts +48 -0
- package/src/i18n/cs.ts +48 -0
- package/src/i18n/de.ts +65 -0
- package/src/i18n/el.ts +48 -0
- package/src/i18n/en.ts +65 -0
- package/src/i18n/es.ts +48 -0
- package/src/i18n/fa.ts +48 -0
- package/src/i18n/fr.ts +48 -0
- package/src/i18n/he.ts +48 -0
- package/src/i18n/hi.ts +48 -0
- package/src/i18n/hu.ts +48 -0
- package/src/i18n/id.ts +48 -0
- package/src/i18n/index.ts +70 -0
- package/src/i18n/it.ts +48 -0
- package/src/i18n/ja.ts +48 -0
- package/src/i18n/ko.ts +48 -0
- package/src/i18n/nl.ts +48 -0
- package/src/i18n/pl.ts +48 -0
- package/src/i18n/pt.ts +48 -0
- package/src/i18n/ro.ts +48 -0
- package/src/i18n/ru.ts +48 -0
- package/src/i18n/sv.ts +48 -0
- package/src/i18n/th.ts +48 -0
- package/src/i18n/tr.ts +48 -0
- package/src/i18n/types.ts +36 -0
- package/src/i18n/uk.ts +48 -0
- package/src/i18n/ur.ts +48 -0
- package/src/i18n/vi.ts +48 -0
- package/src/i18n/zh.ts +48 -0
- package/src/index.ts +9 -0
- package/src/loader.ts +533 -0
- package/src/panel/drag.ts +210 -0
- package/src/panel/panel.ts +617 -0
- package/src/state.ts +91 -0
- package/src/styles/critical.ts +56 -0
- package/src/styles/widget.css +739 -0
- package/src/types/index.ts +2 -0
- package/src/types/locale.ts +55 -0
- package/src/types/widget.ts +300 -0
- package/src/util/debug.ts +12 -0
- package/src/util/dom.ts +68 -0
- package/src/util/events.ts +54 -0
- package/src/util/feature-icons.ts +163 -0
- package/src/util/language-names.ts +41 -0
- package/src/util/svg.ts +93 -0
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../src/types/widget.ts", "../src/types/locale.ts", "../src/util/debug.ts", "../src/config.ts", "../src/util/dom.ts", "../src/features/reading-mask.ts", "../src/features/reading-guide.ts", "../src/features/apply.ts", "../src/features/profile.ts", "../src/state.ts", "../src/focus-trap.ts", "../src/util/svg.ts", "../src/util/feature-icons.ts", "../src/util/language-names.ts", "../src/panel/drag.ts", "../src/i18n/de.ts", "../src/i18n/en.ts", "../src/i18n/fr.ts", "../src/i18n/es.ts", "../src/i18n/it.ts", "../src/i18n/pl.ts", "../src/i18n/tr.ts", "../src/i18n/ar.ts", "../src/i18n/zh.ts", "../src/i18n/hi.ts", "../src/i18n/pt.ts", "../src/i18n/bn.ts", "../src/i18n/ru.ts", "../src/i18n/ja.ts", "../src/i18n/ko.ts", "../src/i18n/vi.ts", "../src/i18n/fa.ts", "../src/i18n/ur.ts", "../src/i18n/th.ts", "../src/i18n/id.ts", "../src/i18n/he.ts", "../src/i18n/nl.ts", "../src/i18n/sv.ts", "../src/i18n/cs.ts", "../src/i18n/el.ts", "../src/i18n/hu.ts", "../src/i18n/ro.ts", "../src/i18n/uk.ts", "../src/i18n/index.ts", "../src/features/tts.ts", "../src/features/structure-nav.ts", "../src/panel/panel.ts", "../src/util/events.ts", "../src/core.ts"],
|
|
4
|
+
"sourcesContent": ["import type { Locale } from './locale.js';\n\nexport const FEATURE_IDS = [\n 'fontSize',\n 'lineHeight',\n 'letterSpacing',\n 'contrast',\n 'grayscale',\n 'invertColors',\n 'dyslexiaFont',\n 'highlightLinks',\n 'pauseAnimations',\n 'bigCursor',\n 'focusOutline',\n 'readingMask',\n 'readingGuide',\n 'tts',\n 'structureNav',\n] as const;\n\nexport type FeatureId = (typeof FEATURE_IDS)[number];\n\nexport const CONTRAST_MODES = ['off', 'high', 'dark', 'invert'] as const;\nexport type ContrastMode = (typeof CONTRAST_MODES)[number];\n\nexport const PROFILE_IDS = [\n 'visionImpaired',\n 'motor',\n 'cognitive',\n 'seizureSafe',\n 'adhd',\n 'blind',\n] as const;\nexport type ProfileId = (typeof PROFILE_IDS)[number];\n\nexport const POSITIONS = ['bottom-right', 'bottom-left', 'top-right', 'top-left'] as const;\nexport type Position = (typeof POSITIONS)[number];\n\nexport interface WidgetState {\n features: Record<FeatureId, boolean>;\n fontSizeLevel: number;\n lineHeightLevel: number;\n letterSpacingLevel: number;\n contrastMode: ContrastMode;\n /** Enlarges panel controls & tap targets \u2014 independent from font-size feature. */\n oversized?: boolean;\n /**\n * Custom FAB position set by user drag (only populated when `draggableFab`\n * is enabled and the user actually moved the button). Coordinates are\n * viewport-pixel distances from the **top-left** corner. When absent, the\n * FAB uses the configured `position` + `offset` anchor.\n */\n fabPosition?: { x: number; y: number } | null;\n /**\n * User-chosen locale override. When set, wins over `config.locale`\n * on the next panel open and gets applied on reload by the loader.\n * Populated by the in-panel language dropdown and the public\n * `setLocale()` runtime API.\n */\n locale?: string;\n}\n\n/**\n * Host-supplied configuration for the widget loader.\n *\n * Set via `window.AccessibilityWidgetConfig = { \u2026 }` **before** the loader\n * script executes. All fields are optional \u2014 the widget ships with sensible\n * defaults. Invalid values are coerced to defaults; with `debug: true` they\n * emit console warnings so mis-configurations are discoverable.\n *\n * @example Minimal override\n * ```ts\n * window.AccessibilityWidgetConfig = { locale: 'de', primaryColor: '#0058a3' };\n * ```\n *\n * @example Enterprise deployment\n * ```ts\n * window.AccessibilityWidgetConfig = {\n * corePath: '/assets/accessibility-widget-core.min.js',\n * cssPath: '/assets/accessibility-widget.min.css',\n * coreIntegrity: 'sha384-\u2026',\n * cssIntegrity: 'sha384-\u2026',\n * position: 'bottom-left',\n * offset: { x: 24, y: 96 }, // clear the chat widget\n * zIndex: 9999,\n * primaryColor: '#0058a3',\n * storageKey: 'mycorp-a11y',\n * statementUrl: '/accessibility-statement',\n * disabledFeatures: ['tts'],\n * initialFeatures: { focusOutline: true },\n * debug: false,\n * };\n * ```\n */\nexport interface WidgetConfig {\n // \u2500\u2500\u2500 asset loading \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** URL to the on-demand core bundle. Default: `/accessibility-widget/accessibility-widget-core.min.js`. */\n corePath?: string;\n /** URL to the widget stylesheet. Default: `/accessibility-widget/accessibility-widget.min.css`. */\n cssPath?: string;\n /** SRI hash for the core bundle (`sha384-\u2026`). Matches the value printed in `dist/integrity.txt`. */\n coreIntegrity?: string | null;\n /** SRI hash for the stylesheet. Matches the value printed in `dist/integrity.txt`. */\n cssIntegrity?: string | null;\n\n // \u2500\u2500\u2500 localization \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Widget locale. `'auto'` (default) picks from `document.documentElement.lang`\n * or `navigator.language`, falling back to `de`. Set explicitly to override.\n */\n locale?: Locale | 'auto';\n\n // \u2500\u2500\u2500 UI / branding \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /** FAB anchor corner. Default: `bottom-right`. */\n position?: Position;\n /**\n * Pixel offset of the FAB from its anchor corner.\n * Useful when other fixed elements (chat widgets, cookie banners) would collide.\n * Default: `{ x: 20, y: 20 }`.\n */\n offset?: { x?: number; y?: number };\n /**\n * Override the FAB z-index. Default: `2147483646` (one below max int32).\n * Lower values allow in-page dialogs to stack on top of the FAB.\n */\n zIndex?: number;\n /** FAB background color. Default: `#0058a3` (BAUER GROUP blue). Must be a valid CSS color. */\n primaryColor?: string;\n /** Override the FAB `aria-label`. `null` \u2192 use the localized default for the active locale. */\n buttonLabel?: string | null;\n\n // \u2500\u2500\u2500 persistence \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * localStorage key for user preferences. Default: `accessibility-widget`.\n * Change this to namespace the widget on multi-tenant platforms where\n * different sub-brands need isolated preferences.\n */\n storageKey?: string;\n\n // \u2500\u2500\u2500 initial experience \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Features turned ON for a first-time visitor (no persisted state yet).\n * Only applies once \u2014 once the user has modified anything in the panel,\n * the persisted state wins.\n *\n * @example Public-sector site that wants a visible focus ring by default\n * ```ts\n * { initialFeatures: { focusOutline: true, highlightLinks: true } }\n * ```\n */\n initialFeatures?: Partial<Record<FeatureId, boolean>>;\n\n // \u2500\u2500\u2500 feature gating \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * Features hidden from the panel UI. Useful when certain features don't\n * make sense in context (e.g. `tts` on a site with no text content).\n * Hidden features are neither toggle-able nor activated by profile presets.\n */\n disabledFeatures?: readonly FeatureId[];\n\n // \u2500\u2500\u2500 legal / compliance \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * URL of the site's accessibility statement. When set, a link is rendered\n * in the panel footer (label is localized \u2014 see `Translation.statementLink`).\n * Recommended for BFSG \u00A7 14 / EN 301 549 \u00A7 12.1.1 compliance.\n *\n * Absolute URLs (`http://`, `https://`, protocol-relative `//\u2026`) open in a\n * new tab with `rel=\"noopener noreferrer\"`; relative paths stay same-tab.\n */\n statementUrl?: string;\n\n /**\n * Optional free-form disclaimer text rendered in the panel footer above\n * the \"Powered by\" line. No default \u2014 if you want the footer to carry\n * guidance (\"Feedback zur Barrierefreiheit bitte an die Hotline \u2026\"), set\n * it per host. Kept as plain text, not HTML; line breaks render as\n * whitespace.\n *\n * @example\n * ```ts\n * { disclaimer: 'Feedback an barrierefreiheit@example.com' }\n * ```\n */\n disclaimer?: string;\n\n /**\n * Suppress the \"Powered by BAUER GROUP Accessibility-Widget\" footer line.\n * Intended for white-label deployments \u2014 the default (`false`) shows a\n * small localised attribution with a link back to the product page.\n */\n hidePoweredBy?: boolean;\n\n // \u2500\u2500\u2500 behavior \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * When true, end users can drag the FAB to a custom position (pointer or\n * keyboard). The chosen position persists under `storageKey` as part of\n * the widget state and is restored on the next visit. Default: `false`.\n *\n * Keyboard: focus the FAB, hold Shift + Arrow keys to move in 10 px steps.\n */\n draggableFab?: boolean;\n /**\n * Keyboard shortcut that opens the widget from anywhere on the page.\n *\n * - `string` \u2014 a combo like `'ctrl+alt+a'`, `'alt+shift+a'`, `'f2'`. Tokens\n * are case-insensitive and joined with `+`. Supported modifiers:\n * `alt`, `ctrl`, `shift`, `meta`. Exactly one non-modifier key is required.\n * - `false` \u2014 disable the shortcut entirely. Useful when the default clashes\n * with a host's own A11y hotkey or a browser / extension binding.\n *\n * Invalid strings emit a `console.warn` when `debug: true` and the shortcut\n * is disabled (no fallback to another combo \u2014 the host's choice is respected).\n *\n * Default: `'ctrl+alt+a'` \u2014 aligned with the prevailing convention among\n * A11y widgets (Userway and others), rarely clashes with browser chrome.\n *\n * @example Function-key style\n * ```ts\n * { keyboardShortcut: 'f2' }\n * ```\n *\n * @example Disable completely\n * ```ts\n * { keyboardShortcut: false }\n * ```\n */\n keyboardShortcut?: string | false;\n /** When true, features that add motion respect `prefers-reduced-motion`. Default: `true`. */\n respectReducedMotion?: boolean;\n /** When true, the FAB is hidden in print media (`@media print`). Default: `true`. */\n hideOnPrint?: boolean;\n\n // \u2500\u2500\u2500 debug \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n /**\n * When true, normally-silent failures (localStorage quota, malformed\n * persisted state, failed core fetch) emit `console.warn`. Production\n * bundles should keep this `false` (default) to avoid noise.\n */\n debug?: boolean;\n}\n\nexport interface ProfilePreset {\n features?: Partial<Record<FeatureId, boolean>>;\n fontSizeLevel?: number;\n lineHeightLevel?: number;\n letterSpacingLevel?: number;\n contrastMode?: ContrastMode;\n}\n\nexport const DEFAULT_STATE: WidgetState = {\n features: FEATURE_IDS.reduce(\n (acc, id) => {\n acc[id] = false;\n return acc;\n },\n {} as Record<FeatureId, boolean>,\n ),\n fontSizeLevel: 1,\n lineHeightLevel: 1.5,\n letterSpacingLevel: 0,\n contrastMode: 'off',\n oversized: false,\n fabPosition: null,\n};\n\nexport const PROFILES: Record<ProfileId, ProfilePreset> = {\n visionImpaired: {\n features: {\n fontSize: true,\n contrast: true,\n highlightLinks: true,\n focusOutline: true,\n bigCursor: true,\n },\n fontSizeLevel: 1.4,\n contrastMode: 'high',\n },\n motor: {\n features: { bigCursor: true, focusOutline: true, pauseAnimations: true },\n },\n cognitive: {\n features: {\n dyslexiaFont: true,\n lineHeight: true,\n letterSpacing: true,\n readingGuide: true,\n },\n lineHeightLevel: 1.8,\n letterSpacingLevel: 0.05,\n },\n seizureSafe: {\n features: { pauseAnimations: true, grayscale: true },\n },\n adhd: {\n features: { readingMask: true, pauseAnimations: true, focusOutline: true },\n },\n blind: {\n features: { structureNav: true, highlightLinks: true, focusOutline: true },\n },\n};\n", "export const SUPPORTED_LOCALES = [\n // Original set (\u2265 8M speakers, EU focus)\n 'de',\n 'en',\n 'fr',\n 'es',\n 'it',\n 'pl',\n 'tr',\n 'ar',\n // Added: all remaining languages with \u2265 8M speakers whose scripts render\n // reliably with standard system fonts on current browsers.\n 'zh', // Mandarin Chinese (Simplified)\n 'hi', // Hindi\n 'pt', // Portuguese\n 'bn', // Bengali\n 'ru', // Russian\n 'ja', // Japanese\n 'ko', // Korean\n 'vi', // Vietnamese\n 'fa', // Persian / Farsi (RTL)\n 'ur', // Urdu (RTL)\n 'th', // Thai\n 'id', // Indonesian (covers Malay speakers via Bahasa)\n 'he', // Hebrew (RTL)\n 'nl', // Dutch\n 'sv', // Swedish\n 'cs', // Czech\n 'el', // Greek\n 'hu', // Hungarian\n 'ro', // Romanian\n 'uk', // Ukrainian\n] as const;\n\nexport type Locale = (typeof SUPPORTED_LOCALES)[number];\n\n/**\n * Right-to-left locales. Used by the panel renderer to set `dir=\"rtl\"`.\n * Keep in sync with the list of locales we ship translations for.\n */\nexport const RTL_LOCALES: readonly Locale[] = ['ar', 'fa', 'ur', 'he'];\n\nexport function isRtl(locale: Locale): boolean {\n return (RTL_LOCALES as readonly string[]).includes(locale);\n}\n\nexport function isLocale(value: unknown): value is Locale {\n return typeof value === 'string' && (SUPPORTED_LOCALES as readonly string[]).includes(value);\n}\n\nexport function normalizeLocale(input: string | undefined | null, fallback: Locale = 'de'): Locale {\n if (!input) return fallback;\n const prefix = input.toLowerCase().split(/[-_]/)[0];\n return prefix && isLocale(prefix) ? prefix : fallback;\n}\n", "/**\n * Emits a console warning only when debug mode is enabled on\n * `window.AccessibilityWidgetConfig.debug`. Silent by default so production\n * bundles don't leak noise, but makes genuine failures discoverable when the\n * developer opts in.\n */\nexport function warnIfDebug(message: string, error?: unknown): void {\n if (typeof window === 'undefined') return;\n if (!window.AccessibilityWidgetConfig?.debug) return;\n\n console.warn(`[aw] ${message}`, error);\n}\n", "import {\n FEATURE_IDS,\n POSITIONS,\n type FeatureId,\n type WidgetConfig,\n type Position,\n} from './types/widget.js';\nimport type { Locale } from './types/locale.js';\nimport { normalizeLocale, isLocale } from './types/index.js';\nimport { warnIfDebug } from './util/debug.js';\n\n/**\n * Fully-resolved config with no optional fields \u2014 every loader / panel /\n * feature call site can rely on the presence of every key.\n */\nexport interface ResolvedConfig {\n corePath: string;\n cssPath: string;\n coreIntegrity: string | null;\n cssIntegrity: string | null;\n locale: Locale;\n position: Position;\n offset: { x: number; y: number };\n zIndex: number;\n primaryColor: string;\n buttonLabel: string | null;\n storageKey: string;\n initialFeatures: Readonly<Partial<Record<FeatureId, boolean>>>;\n disabledFeatures: ReadonlySet<FeatureId>;\n statementUrl: string | null;\n disclaimer: string | null;\n hidePoweredBy: boolean;\n draggableFab: boolean;\n respectReducedMotion: boolean;\n hideOnPrint: boolean;\n debug: boolean;\n}\n\nconst DEFAULTS = {\n corePath: '/accessibility-widget/accessibility-widget-core.min.js',\n cssPath: '/accessibility-widget/accessibility-widget.min.css',\n position: 'bottom-right' as Position,\n offset: { x: 20, y: 20 },\n zIndex: 2_147_483_646,\n primaryColor: '#0058a3',\n storageKey: 'accessibility-widget',\n draggableFab: false,\n respectReducedMotion: true,\n hideOnPrint: true,\n debug: false,\n} as const;\n\n// Accepts #rgb, #rrggbb, #rrggbbaa, rgb/rgba/hsl/hsla/color() functional forms,\n// and named colors (anything CSS accepts). For the primaryColor field we\n// want ANY valid CSS color, so the regex is permissive \u2014 just not empty.\nconst NON_TRIVIAL_COLOR_RE =\n /^(?:#[0-9a-f]{3,8}|(?:rgb|rgba|hsl|hsla|color|lab|lch|oklab|oklch)\\s*\\(.+\\)|[a-z]+)$/i;\n\nexport function resolveConfig(input: WidgetConfig | undefined, navLang: string): ResolvedConfig {\n const cfg = input ?? {};\n const debug = cfg.debug ?? DEFAULTS.debug;\n\n return {\n corePath: cfg.corePath ?? DEFAULTS.corePath,\n cssPath: cfg.cssPath ?? DEFAULTS.cssPath,\n coreIntegrity: cfg.coreIntegrity ?? null,\n cssIntegrity: cfg.cssIntegrity ?? null,\n locale: resolveLocale(cfg.locale, navLang, debug),\n position: resolvePosition(cfg.position, debug),\n offset: resolveOffset(cfg.offset, debug),\n zIndex: resolveZIndex(cfg.zIndex, debug),\n primaryColor: resolvePrimaryColor(cfg.primaryColor, debug),\n buttonLabel: cfg.buttonLabel ?? null,\n storageKey: resolveStorageKey(cfg.storageKey, debug),\n initialFeatures: resolveInitialFeatures(cfg.initialFeatures, debug),\n disabledFeatures: resolveDisabledFeatures(cfg.disabledFeatures, debug),\n statementUrl: resolveStatementUrl(cfg.statementUrl, debug),\n disclaimer: resolveDisclaimer(cfg.disclaimer),\n hidePoweredBy: Boolean(cfg.hidePoweredBy),\n draggableFab: cfg.draggableFab ?? DEFAULTS.draggableFab,\n respectReducedMotion: cfg.respectReducedMotion ?? DEFAULTS.respectReducedMotion,\n hideOnPrint: cfg.hideOnPrint ?? DEFAULTS.hideOnPrint,\n debug,\n };\n}\n\n// \u2500\u2500\u2500 individual field resolvers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nfunction resolveLocale(requested: WidgetConfig['locale'], navLang: string, debug: boolean): Locale {\n if (!requested || requested === 'auto') return normalizeLocale(navLang, 'de');\n if (isLocale(requested)) return requested;\n if (debug)\n warnIfDebug(\n `config.locale \"${String(requested)}\" is not supported; falling back to auto-detect`,\n );\n return normalizeLocale(navLang, 'de');\n}\n\nfunction resolvePosition(requested: WidgetConfig['position'], debug: boolean): Position {\n if (!requested) return DEFAULTS.position;\n if ((POSITIONS as readonly string[]).includes(requested)) return requested;\n if (debug)\n warnIfDebug(\n `config.position \"${String(requested)}\" is not one of ${POSITIONS.join(', ')}; using default`,\n );\n return DEFAULTS.position;\n}\n\nfunction resolveOffset(\n requested: WidgetConfig['offset'],\n debug: boolean,\n): { x: number; y: number } {\n if (!requested) return { ...DEFAULTS.offset };\n const x = finiteOr(requested.x, DEFAULTS.offset.x, 'config.offset.x', debug);\n const y = finiteOr(requested.y, DEFAULTS.offset.y, 'config.offset.y', debug);\n return { x, y };\n}\n\nfunction resolveZIndex(requested: WidgetConfig['zIndex'], debug: boolean): number {\n return finiteOr(requested, DEFAULTS.zIndex, 'config.zIndex', debug);\n}\n\nfunction resolvePrimaryColor(requested: WidgetConfig['primaryColor'], debug: boolean): string {\n if (requested === undefined) return DEFAULTS.primaryColor;\n const trimmed = String(requested).trim();\n if (!trimmed) {\n if (debug) warnIfDebug('config.primaryColor is empty; using default');\n return DEFAULTS.primaryColor;\n }\n if (!NON_TRIVIAL_COLOR_RE.test(trimmed)) {\n if (debug)\n warnIfDebug(\n `config.primaryColor \"${trimmed}\" does not look like a CSS color; browsers may reject it`,\n );\n }\n return trimmed;\n}\n\nfunction resolveStorageKey(requested: WidgetConfig['storageKey'], debug: boolean): string {\n if (requested === undefined) return DEFAULTS.storageKey;\n const trimmed = String(requested).trim();\n if (!trimmed) {\n if (debug) warnIfDebug('config.storageKey is empty; using default');\n return DEFAULTS.storageKey;\n }\n return trimmed;\n}\n\nfunction resolveInitialFeatures(\n requested: WidgetConfig['initialFeatures'],\n debug: boolean,\n): Readonly<Partial<Record<FeatureId, boolean>>> {\n if (!requested) return Object.freeze({});\n const valid: Partial<Record<FeatureId, boolean>> = {};\n const validIds = new Set<string>(FEATURE_IDS);\n for (const [key, value] of Object.entries(requested)) {\n if (!validIds.has(key)) {\n if (debug) warnIfDebug(`config.initialFeatures: unknown feature id \"${key}\" ignored`);\n continue;\n }\n valid[key as FeatureId] = Boolean(value);\n }\n return Object.freeze(valid);\n}\n\nfunction resolveDisabledFeatures(\n requested: WidgetConfig['disabledFeatures'],\n debug: boolean,\n): ReadonlySet<FeatureId> {\n if (!requested) return new Set();\n const result = new Set<FeatureId>();\n const validIds = new Set<string>(FEATURE_IDS);\n for (const id of requested) {\n if (!validIds.has(id)) {\n if (debug) warnIfDebug(`config.disabledFeatures: unknown feature id \"${id}\" ignored`);\n continue;\n }\n result.add(id);\n }\n return result;\n}\n\nfunction resolveDisclaimer(requested: WidgetConfig['disclaimer']): string | null {\n if (requested === undefined || requested === null) return null;\n const trimmed = String(requested).trim();\n return trimmed || null;\n}\n\nfunction resolveStatementUrl(\n requested: WidgetConfig['statementUrl'],\n debug: boolean,\n): string | null {\n if (!requested) return null;\n const trimmed = String(requested).trim();\n if (!trimmed) return null;\n // A best-effort sanity check: block javascript: / data: schemes to avoid\n // footguns when the host interpolates user input.\n if (/^\\s*(?:javascript|data):/i.test(trimmed)) {\n if (debug) warnIfDebug(`config.statementUrl \"${trimmed}\" uses a blocked scheme; ignoring`);\n return null;\n }\n return trimmed;\n}\n\nfunction finiteOr(value: unknown, fallback: number, label: string, debug: boolean): number {\n if (value === undefined || value === null) return fallback;\n const n = Number(value);\n if (!Number.isFinite(n)) {\n if (debug) warnIfDebug(`${label} \"${String(value)}\" is not a finite number; using ${fallback}`);\n return fallback;\n }\n return n;\n}\n", "export type AttrMap = Record<string, string | number | boolean | null | undefined>;\nexport type EventMap = Record<string, EventListener>;\n\nexport interface MakeOptions {\n class?: string;\n text?: string;\n attrs?: AttrMap;\n on?: EventMap;\n children?: (Node | null | undefined)[];\n}\n\n/**\n * Type-safe DOM builder. Intentionally does NOT accept raw HTML strings \u2014\n * all content is set via textContent or pre-built child nodes. This keeps\n * the widget XSS-safe even if a future config field leaks untrusted input.\n */\nexport function make<K extends keyof HTMLElementTagNameMap>(\n tag: K,\n opts: MakeOptions = {},\n): HTMLElementTagNameMap[K] {\n const el = document.createElement(tag);\n if (opts.class) el.className = opts.class;\n if (opts.text !== undefined) el.textContent = opts.text;\n if (opts.attrs) {\n for (const [k, v] of Object.entries(opts.attrs)) {\n if (v === null || v === undefined || v === false) continue;\n el.setAttribute(k, v === true ? '' : String(v));\n }\n }\n if (opts.on) {\n for (const [evt, handler] of Object.entries(opts.on)) {\n el.addEventListener(evt, handler);\n }\n }\n if (opts.children) {\n for (const child of opts.children) {\n if (child) el.appendChild(child);\n }\n }\n return el;\n}\n\nexport function toggleAttr(\n el: Element,\n name: string,\n value: string | number | null | undefined | false,\n): void {\n if (value === null || value === undefined || value === false || value === '') {\n el.removeAttribute(name);\n } else {\n el.setAttribute(name, String(value));\n }\n}\n\nexport function prefersReducedMotion(): boolean {\n return typeof matchMedia === 'function' && matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nexport function onceIdle(cb: () => void, timeout = 2000): void {\n const win = window as unknown as {\n requestIdleCallback?: (cb: () => void, o?: { timeout: number }) => number;\n };\n if (typeof win.requestIdleCallback === 'function') {\n win.requestIdleCallback(cb, { timeout });\n } else {\n setTimeout(cb, Math.min(timeout, 1000));\n }\n}\n", "let maskEl: HTMLDivElement | null = null;\nlet handler: ((e: MouseEvent | TouchEvent) => void) | null = null;\n\nexport function readingMaskApply(on: boolean): void {\n if (on && !maskEl) {\n maskEl = document.createElement('div');\n maskEl.className = 'aw-reading-mask';\n maskEl.setAttribute('aria-hidden', 'true');\n document.body.appendChild(maskEl);\n handler = (e) => {\n const y = 'clientY' in e ? e.clientY : (e.touches[0]?.clientY ?? 0);\n maskEl!.style.setProperty('--aw-mask-y', `${y}px`);\n };\n document.addEventListener('mousemove', handler as EventListener, { passive: true });\n document.addEventListener('touchmove', handler as EventListener, { passive: true });\n } else if (!on && maskEl) {\n if (handler) {\n document.removeEventListener('mousemove', handler as EventListener);\n document.removeEventListener('touchmove', handler as EventListener);\n }\n maskEl.remove();\n maskEl = null;\n handler = null;\n }\n}\n", "let guideEl: HTMLDivElement | null = null;\nlet handler: ((e: MouseEvent | TouchEvent) => void) | null = null;\n\nexport function readingGuideApply(on: boolean): void {\n if (on && !guideEl) {\n guideEl = document.createElement('div');\n guideEl.className = 'aw-reading-guide';\n guideEl.setAttribute('aria-hidden', 'true');\n document.body.appendChild(guideEl);\n handler = (e) => {\n const y = 'clientY' in e ? e.clientY : (e.touches[0]?.clientY ?? 0);\n guideEl!.style.top = `${y - 16}px`;\n };\n document.addEventListener('mousemove', handler as EventListener, { passive: true });\n document.addEventListener('touchmove', handler as EventListener, { passive: true });\n } else if (!on && guideEl) {\n if (handler) {\n document.removeEventListener('mousemove', handler as EventListener);\n document.removeEventListener('touchmove', handler as EventListener);\n }\n guideEl.remove();\n guideEl = null;\n handler = null;\n }\n}\n", "import type { WidgetState } from '../types/index.js';\nimport { toggleAttr } from '../util/dom.js';\nimport { readingMaskApply } from './reading-mask.js';\nimport { readingGuideApply } from './reading-guide.js';\n\nconst HTML_ATTR = {\n contrast: 'data-aw-contrast',\n grayscale: 'data-aw-grayscale',\n invert: 'data-aw-invert',\n dyslexia: 'data-aw-dyslexia',\n highlight: 'data-aw-highlight-links',\n pauseAnim: 'data-aw-pause-animations',\n bigCursor: 'data-aw-big-cursor',\n focus: 'data-aw-focus',\n} as const;\n\nexport function applyState(state: WidgetState): void {\n const html = document.documentElement;\n html.setAttribute('data-aw-instant', '1');\n\n html.style.setProperty('--aw-font-scale', String(state.fontSizeLevel));\n html.style.setProperty('--aw-line-height', String(state.lineHeightLevel));\n html.style.setProperty('--aw-letter-spacing', `${state.letterSpacingLevel}em`);\n\n const f = state.features;\n toggleAttr(html, HTML_ATTR.contrast, f.contrast ? state.contrastMode : false);\n toggleAttr(html, HTML_ATTR.grayscale, f.grayscale ? '1' : false);\n toggleAttr(html, HTML_ATTR.invert, f.invertColors ? '1' : false);\n toggleAttr(html, HTML_ATTR.dyslexia, f.dyslexiaFont ? '1' : false);\n toggleAttr(html, HTML_ATTR.highlight, f.highlightLinks ? '1' : false);\n toggleAttr(html, HTML_ATTR.pauseAnim, f.pauseAnimations ? '1' : false);\n toggleAttr(html, HTML_ATTR.bigCursor, f.bigCursor ? '1' : false);\n toggleAttr(html, HTML_ATTR.focus, f.focusOutline ? '1' : false);\n\n readingMaskApply(f.readingMask);\n readingGuideApply(f.readingGuide);\n}\n", "import { PROFILES, type ProfileId, type WidgetState } from '../types/index.js';\n\nexport function applyProfile(state: WidgetState, profileId: ProfileId): WidgetState {\n const preset = PROFILES[profileId];\n const next: WidgetState = {\n features: { ...state.features },\n fontSizeLevel: preset.fontSizeLevel ?? state.fontSizeLevel,\n lineHeightLevel: preset.lineHeightLevel ?? state.lineHeightLevel,\n letterSpacingLevel: preset.letterSpacingLevel ?? state.letterSpacingLevel,\n contrastMode: preset.contrastMode ?? state.contrastMode,\n };\n if (preset.features) {\n for (const [k, v] of Object.entries(preset.features)) {\n next.features[k as keyof typeof next.features] = v as boolean;\n }\n }\n return next;\n}\n", "import {\n DEFAULT_STATE,\n isLocale,\n type WidgetState,\n type FeatureId,\n type ContrastMode,\n} from './types/index.js';\nimport { warnIfDebug } from './util/debug.js';\n\nexport const STEPS = {\n fontSize: [1, 1.2, 1.4, 1.6] as const,\n lineHeight: [1.5, 1.8, 2.0] as const,\n letterSpacing: [0, 0.05, 0.1] as const,\n contrast: ['off', 'high', 'dark', 'invert'] as const satisfies readonly ContrastMode[],\n};\n\nexport function createDefaultState(): WidgetState {\n return {\n ...DEFAULT_STATE,\n features: { ...DEFAULT_STATE.features },\n };\n}\n\nexport function loadState(storageKey: string): WidgetState {\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return createDefaultState();\n const parsed = JSON.parse(raw) as Partial<WidgetState>;\n const fresh = createDefaultState();\n const next: WidgetState = {\n features: { ...fresh.features, ...(parsed.features ?? {}) },\n fontSizeLevel: parsed.fontSizeLevel ?? fresh.fontSizeLevel,\n lineHeightLevel: parsed.lineHeightLevel ?? fresh.lineHeightLevel,\n letterSpacingLevel: parsed.letterSpacingLevel ?? fresh.letterSpacingLevel,\n contrastMode: parsed.contrastMode ?? fresh.contrastMode,\n oversized: parsed.oversized ?? fresh.oversized,\n };\n // Preserve optional runtime-override fields. Without these the next save\n // (triggered by any feature toggle) would wipe the user's language\n // choice and their dragged FAB position.\n if (typeof parsed.locale === 'string' && isLocale(parsed.locale)) {\n next.locale = parsed.locale;\n }\n if (\n parsed.fabPosition &&\n typeof parsed.fabPosition.x === 'number' &&\n typeof parsed.fabPosition.y === 'number'\n ) {\n next.fabPosition = { x: parsed.fabPosition.x, y: parsed.fabPosition.y };\n }\n return next;\n } catch (err) {\n warnIfDebug(`loadState(\"${storageKey}\") failed, falling back to defaults`, err);\n return createDefaultState();\n }\n}\n\nexport function saveState(storageKey: string, state: WidgetState): void {\n try {\n localStorage.setItem(storageKey, JSON.stringify(state));\n } catch (err) {\n // Quota exceeded / storage disabled (Safari Private Mode, Intelligent Tracking Prevention, \u2026).\n warnIfDebug(`saveState(\"${storageKey}\") failed \u2014 preferences will not persist`, err);\n }\n}\n\nexport function clearState(storageKey: string): void {\n try {\n localStorage.removeItem(storageKey);\n } catch (err) {\n warnIfDebug(`clearState(\"${storageKey}\") failed`, err);\n }\n}\n\nexport function hasAnyFeatureOn(state: WidgetState): boolean {\n return Object.values(state.features).some(Boolean);\n}\n\nexport function cycleStep<T extends number | string>(\n current: T,\n steps: readonly T[],\n): { next: T; wrapped: boolean } {\n const idx = steps.indexOf(current);\n const nextIdx = idx < 0 ? 1 : (idx + 1) % steps.length;\n const next = steps[nextIdx] ?? steps[0]!;\n return { next, wrapped: nextIdx === 0 };\n}\n\nexport function setFeature(state: WidgetState, id: FeatureId, on: boolean): WidgetState {\n return { ...state, features: { ...state.features, [id]: on } };\n}\n", "const FOCUSABLE =\n 'button,[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex=\"-1\"])';\n\nexport interface FocusTrap {\n activate(): void;\n deactivate(): void;\n}\n\nexport function createFocusTrap(root: HTMLElement): FocusTrap {\n function onKey(e: KeyboardEvent): void {\n if (e.key !== 'Tab') return;\n const list = Array.from(root.querySelectorAll<HTMLElement>(FOCUSABLE)).filter(\n (el) => !el.hasAttribute('disabled') && el.offsetParent !== null,\n );\n if (list.length === 0) {\n e.preventDefault();\n return;\n }\n const first = list[0]!;\n const last = list[list.length - 1]!;\n const active = document.activeElement as HTMLElement | null;\n if (e.shiftKey && active === first) {\n last.focus();\n e.preventDefault();\n } else if (!e.shiftKey && active === last) {\n first.focus();\n e.preventDefault();\n }\n }\n\n return {\n activate: () => root.addEventListener('keydown', onKey),\n deactivate: () => root.removeEventListener('keydown', onKey),\n };\n}\n", "const SVG_NS = 'http://www.w3.org/2000/svg';\n\nexport interface SvgPath {\n d: string;\n fill?: string;\n stroke?: string;\n strokeWidth?: number | string;\n}\n\nexport interface SvgCircle {\n cx: number;\n cy: number;\n r: number;\n fill?: string;\n stroke?: string;\n strokeWidth?: number | string;\n}\n\nexport interface SvgIconOptions {\n viewBox?: string;\n width?: number;\n height?: number;\n paths?: readonly SvgPath[];\n circles?: readonly SvgCircle[];\n /**\n * Lucide-style outline icon. Applies fill:none, stroke:currentColor,\n * stroke-width:2, round caps/joins at the <svg> root, so individual\n * paths/circles don't need to repeat these attributes.\n */\n stroke?: boolean;\n ariaHidden?: boolean;\n}\n\n/**\n * Build an SVG element programmatically \u2014 no innerHTML, no DOMParser,\n * so no XSS surface even if path data ever comes from config.\n */\nexport function buildIcon(opts: SvgIconOptions): SVGSVGElement {\n const svg = document.createElementNS(SVG_NS, 'svg');\n svg.setAttribute('viewBox', opts.viewBox ?? '0 0 24 24');\n if (opts.width !== undefined) svg.setAttribute('width', String(opts.width));\n if (opts.height !== undefined) svg.setAttribute('height', String(opts.height));\n if (opts.ariaHidden !== false) svg.setAttribute('aria-hidden', 'true');\n svg.setAttribute('focusable', 'false');\n\n const strokeMode = Boolean(opts.stroke);\n if (strokeMode) {\n svg.setAttribute('fill', 'none');\n svg.setAttribute('stroke', 'currentColor');\n svg.setAttribute('stroke-width', '2');\n svg.setAttribute('stroke-linecap', 'round');\n svg.setAttribute('stroke-linejoin', 'round');\n }\n\n for (const p of opts.paths ?? []) {\n const el = document.createElementNS(SVG_NS, 'path');\n el.setAttribute('d', p.d);\n if (p.fill !== undefined) el.setAttribute('fill', p.fill);\n else if (!strokeMode) el.setAttribute('fill', 'currentColor');\n if (p.stroke !== undefined) el.setAttribute('stroke', p.stroke);\n if (p.strokeWidth !== undefined) el.setAttribute('stroke-width', String(p.strokeWidth));\n svg.appendChild(el);\n }\n for (const c of opts.circles ?? []) {\n const el = document.createElementNS(SVG_NS, 'circle');\n el.setAttribute('cx', String(c.cx));\n el.setAttribute('cy', String(c.cy));\n el.setAttribute('r', String(c.r));\n if (c.fill !== undefined) el.setAttribute('fill', c.fill);\n else if (!strokeMode) el.setAttribute('fill', 'currentColor');\n if (c.stroke !== undefined) el.setAttribute('stroke', c.stroke);\n if (c.strokeWidth !== undefined) el.setAttribute('stroke-width', String(c.strokeWidth));\n svg.appendChild(el);\n }\n return svg;\n}\n\n/** Accessibility person icon (BFSG signature icon). */\nexport const ICON_ACCESSIBILITY: SvgIconOptions = {\n viewBox: '0 0 24 24',\n paths: [\n {\n d: 'M12 2a2 2 0 1 1 0 4 2 2 0 0 1 0-4zm-6 5 6 2 6-2 .5 1.8L13 10.2v3.2l3.2 7.4-1.7.8L12 15l-2.5 6.6-1.7-.8L11 13.4V10.2L5.5 8.8 6 7z',\n },\n ],\n};\n\n/** Close / X icon (Lucide: x). */\nexport const ICON_CLOSE: SvgIconOptions = {\n viewBox: '0 0 24 24',\n stroke: true,\n paths: [{ d: 'M18 6 6 18M6 6l12 12' }],\n};\n", "/**\n * Lucide-based pictograms for widget features and UI controls.\n *\n * All paths are taken from Lucide (https://lucide.dev, MIT license) and\n * rendered via our programmatic buildIcon() \u2014 never innerHTML \u2014 so there is\n * no XSS surface. Only the raw `d` data is shipped, no runtime dependency.\n *\n * Convention: every icon uses the shared 24x24 Lucide viewBox and\n * `stroke: true`, which lets <svg> itself carry the stroke defaults\n * (fill:none, stroke:currentColor, stroke-width:2, round caps) \u2014 path\n * definitions therefore stay minimal and compress well under gzip.\n *\n * This module is imported ONLY from the panel (core bundle).\n * The loader bundle never pulls it in, keeping the initial FAB payload tiny.\n */\nimport type { FeatureId } from '../types/index.js';\nimport type { SvgIconOptions } from './svg.js';\n\nexport const FEATURE_ICONS: Record<FeatureId, SvgIconOptions> = {\n fontSize: {\n stroke: true,\n paths: [{ d: 'M4 7V4h16v3M9 20h6M12 4v16' }],\n },\n lineHeight: {\n stroke: true,\n paths: [{ d: 'M3 6h18M3 12h18M3 18h18' }],\n },\n letterSpacing: {\n stroke: true,\n paths: [{ d: 'M18 8l4 4-4 4M2 12h20M6 8l-4 4 4 4' }],\n },\n contrast: {\n stroke: true,\n paths: [\n { d: 'M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0z' },\n { d: 'M12 2a10 10 0 0 1 0 20z', fill: 'currentColor' },\n ],\n },\n grayscale: {\n stroke: true,\n paths: [\n {\n d: 'M12 22a7 7 0 0 0 7-7c0-2-1-3.9-3-5.5s-3.5-4-4-6.5c-.5 2.5-2 4.9-4 6.5-2 1.6-3 3.5-3 5.5a7 7 0 0 0 7 7z',\n },\n ],\n },\n invertColors: {\n stroke: true,\n paths: [{ d: 'M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9z' }],\n },\n dyslexiaFont: {\n stroke: true,\n paths: [\n { d: 'M2 3h6a4 4 0 0 1 4 4v14a3 3 0 0 0-3-3H2z' },\n { d: 'M22 3h-6a4 4 0 0 0-4 4v14a3 3 0 0 1 3-3h7z' },\n ],\n },\n highlightLinks: {\n stroke: true,\n paths: [\n { d: 'M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71' },\n { d: 'M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71' },\n ],\n },\n pauseAnimations: {\n stroke: true,\n paths: [{ d: 'M6 4h4v16H6zM14 4h4v16h-4z' }],\n },\n bigCursor: {\n stroke: true,\n paths: [{ d: 'M4 4l7.07 17 2.51-7.39L21 11.07z' }],\n },\n focusOutline: {\n stroke: true,\n paths: [\n { d: 'M15 12a3 3 0 1 1-6 0 3 3 0 0 1 6 0z' },\n {\n d: 'M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2',\n },\n ],\n },\n readingMask: {\n stroke: true,\n paths: [\n {\n d: 'M3 7V5a2 2 0 0 1 2-2h2M17 3h2a2 2 0 0 1 2 2v2M21 17v2a2 2 0 0 1-2 2h-2M7 21H5a2 2 0 0 1-2-2v-2M7 12h10',\n },\n ],\n },\n readingGuide: {\n stroke: true,\n paths: [{ d: 'M21 12H3M6 8v8M18 8v8' }],\n },\n tts: {\n stroke: true,\n paths: [\n {\n d: 'M11 4.7a.7.7 0 0 0-1.2-.5L6.4 7.6A1.4 1.4 0 0 1 5.4 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.4a1.4 1.4 0 0 1 1 .4l3.4 3.4A.7.7 0 0 0 11 19.3z',\n },\n { d: 'M16 9a5 5 0 0 1 0 6' },\n { d: 'M19.36 18.36a9 9 0 0 0 0-12.72' },\n ],\n },\n structureNav: {\n stroke: true,\n paths: [{ d: 'M21 12h-8M21 6H8M21 18h-8M3 6v4c0 1.1.9 2 2 2h3M3 10v6c0 1.1.9 2 2 2h3' }],\n },\n};\n\n/** Reset / undo (Lucide: rotate-ccw). */\nexport const ICON_RESET: SvgIconOptions = {\n stroke: true,\n paths: [{ d: 'M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8M3 3v5h5' }],\n};\n\n/** Info / tooltip trigger (Lucide: info). */\nexport const ICON_INFO: SvgIconOptions = {\n stroke: true,\n paths: [\n { d: 'M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0z' },\n { d: 'M12 16v-4' },\n { d: 'M12 8h.01' },\n ],\n};\n\n/** Globe / language switcher (Lucide: globe). */\nexport const ICON_GLOBE: SvgIconOptions = {\n stroke: true,\n paths: [\n { d: 'M22 12a10 10 0 1 1-20 0 10 10 0 0 1 20 0z' },\n { d: 'M12 2a14.5 14.5 0 0 0 0 20M12 2a14.5 14.5 0 0 1 0 20M2 12h20' },\n ],\n};\n\n/** Oversized mode (Lucide: maximize-2). */\nexport const ICON_MAXIMIZE: SvgIconOptions = {\n stroke: true,\n paths: [{ d: 'M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7' }],\n};\n\n/** Collapsible section chevron (Lucide: chevron-down). */\nexport const ICON_CHEVRON: SvgIconOptions = {\n stroke: true,\n paths: [{ d: 'm6 9 6 6 6-6' }],\n};\n\n/** Drag handle (Lucide: grip-horizontal) \u2014 filled dots. */\nexport const ICON_GRIP: SvgIconOptions = {\n circles: [\n { cx: 9, cy: 5, r: 1 },\n { cx: 9, cy: 12, r: 1 },\n { cx: 9, cy: 19, r: 1 },\n { cx: 15, cy: 5, r: 1 },\n { cx: 15, cy: 12, r: 1 },\n { cx: 15, cy: 19, r: 1 },\n ],\n};\n\n/** Active state check mark (Lucide: check). */\nexport const ICON_CHECK: SvgIconOptions = {\n stroke: true,\n paths: [{ d: 'M20 6 9 17l-5-5' }],\n};\n", "/**\n * Native language labels for the runtime language switcher.\n *\n * Each entry is the language's endonym (its own native name), not a localized\n * translation. Showing \"Deutsch\" to a Japanese reader is more useful than\n * \"German\" \u2014 the user who needs German will recognise their own word for it.\n *\n * The autonym pattern also sidesteps N\u00D7N translation matrices.\n */\nimport type { Locale } from '../types/index.js';\n\nexport const LANGUAGE_NAMES: Record<Locale, string> = {\n de: 'Deutsch',\n en: 'English',\n fr: 'Fran\u00E7ais',\n es: 'Espa\u00F1ol',\n it: 'Italiano',\n pl: 'Polski',\n tr: 'T\u00FCrk\u00E7e',\n ar: '\u0627\u0644\u0639\u0631\u0628\u064A\u0629',\n zh: '\u4E2D\u6587',\n hi: '\u0939\u093F\u0928\u094D\u0926\u0940',\n pt: 'Portugu\u00EAs',\n bn: '\u09AC\u09BE\u0982\u09B2\u09BE',\n ru: '\u0420\u0443\u0441\u0441\u043A\u0438\u0439',\n ja: '\u65E5\u672C\u8A9E',\n ko: '\uD55C\uAD6D\uC5B4',\n vi: 'Ti\u1EBFng Vi\u1EC7t',\n fa: '\u0641\u0627\u0631\u0633\u06CC',\n ur: '\u0627\u0631\u062F\u0648',\n th: '\u0E44\u0E17\u0E22',\n id: 'Bahasa Indonesia',\n he: '\u05E2\u05D1\u05E8\u05D9\u05EA',\n nl: 'Nederlands',\n sv: 'Svenska',\n cs: '\u010Ce\u0161tina',\n el: '\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC',\n hu: 'Magyar',\n ro: 'Rom\u00E2n\u0103',\n uk: '\u0423\u043A\u0440\u0430\u0457\u043D\u0441\u044C\u043A\u0430',\n};\n", "/**\n * Panel drag-to-move \u2014 pointer-events based, with pointer capture so the drag\n * survives the cursor leaving the panel. Position is persisted per device via\n * a dedicated localStorage key, intentionally separate from WidgetState so the\n * loader does not touch it before first paint.\n *\n * Keyboard users get an equivalent shortcut (Ctrl+Shift+Arrow) \u2014 a draggable\n * accessibility widget with no keyboard path would be self-defeating.\n */\n\nimport { warnIfDebug } from '../util/debug.js';\n\nexport interface PanelPosition {\n /** Left offset in pixels from the viewport edge. */\n x: number;\n /** Top offset in pixels from the viewport edge. */\n y: number;\n}\n\nconst KEYBOARD_STEP = 20;\nconst EDGE_MARGIN = 8;\n\nexport interface DraggableOptions {\n root: HTMLElement;\n handle: HTMLElement;\n storageKey: string;\n /** Called with null when the user resets, otherwise with the new position. */\n onChange?: (pos: PanelPosition | null) => void;\n}\n\nexport interface DraggableHandle {\n /** Re-apply the saved position (call after rerender). */\n restore(): void;\n /** Remove listeners. */\n destroy(): void;\n /** Clear saved position. */\n reset(): void;\n}\n\nexport function loadPanelPosition(storageKey: string): PanelPosition | null {\n try {\n const raw = localStorage.getItem(positionKey(storageKey));\n if (!raw) return null;\n const parsed = JSON.parse(raw) as Partial<PanelPosition>;\n if (typeof parsed.x !== 'number' || typeof parsed.y !== 'number') return null;\n return { x: parsed.x, y: parsed.y };\n } catch (err) {\n warnIfDebug('loadPanelPosition failed', err);\n return null;\n }\n}\n\nexport function savePanelPosition(storageKey: string, pos: PanelPosition | null): void {\n try {\n if (pos === null) localStorage.removeItem(positionKey(storageKey));\n else localStorage.setItem(positionKey(storageKey), JSON.stringify(pos));\n } catch (err) {\n warnIfDebug('savePanelPosition failed', err);\n }\n}\n\nfunction positionKey(storageKey: string): string {\n return `${storageKey}-pos`;\n}\n\nexport function makeDraggable(opts: DraggableOptions): DraggableHandle {\n const { root, handle, storageKey, onChange } = opts;\n\n let current: PanelPosition | null = loadPanelPosition(storageKey);\n applyPosition(root, current);\n\n // --- Pointer drag --------------------------------------------------------\n let dragging = false;\n let startX = 0;\n let startY = 0;\n let startLeft = 0;\n let startTop = 0;\n let pointerId = -1;\n\n function onPointerDown(ev: PointerEvent): void {\n // Only primary button / primary touch.\n if (ev.button !== 0 && ev.pointerType === 'mouse') return;\n // Don't steal clicks from interactive controls within the handle.\n const target = ev.target as Element | null;\n if (\n target &&\n target.closest('button, a, input, select, [role=\"button\"]') &&\n target !== handle\n ) {\n return;\n }\n const rect = root.getBoundingClientRect();\n dragging = true;\n pointerId = ev.pointerId;\n startX = ev.clientX;\n startY = ev.clientY;\n startLeft = rect.left;\n startTop = rect.top;\n handle.setPointerCapture(pointerId);\n handle.classList.add('is-dragging');\n ev.preventDefault();\n }\n\n function onPointerMove(ev: PointerEvent): void {\n if (!dragging || ev.pointerId !== pointerId) return;\n const dx = ev.clientX - startX;\n const dy = ev.clientY - startY;\n const next = clampToViewport({ x: startLeft + dx, y: startTop + dy }, root);\n current = next;\n applyPosition(root, next);\n }\n\n function onPointerUp(ev: PointerEvent): void {\n if (!dragging || ev.pointerId !== pointerId) return;\n dragging = false;\n if (handle.hasPointerCapture(pointerId)) handle.releasePointerCapture(pointerId);\n handle.classList.remove('is-dragging');\n pointerId = -1;\n if (current) {\n savePanelPosition(storageKey, current);\n onChange?.(current);\n }\n }\n\n handle.addEventListener('pointerdown', onPointerDown);\n handle.addEventListener('pointermove', onPointerMove);\n handle.addEventListener('pointerup', onPointerUp);\n handle.addEventListener('pointercancel', onPointerUp);\n\n // --- Keyboard fallback ---------------------------------------------------\n function onKey(ev: KeyboardEvent): void {\n if (!ev.ctrlKey || !ev.shiftKey) return;\n const rect = root.getBoundingClientRect();\n let { left, top } = rect;\n let moved = false;\n switch (ev.key) {\n case 'ArrowLeft':\n left -= KEYBOARD_STEP;\n moved = true;\n break;\n case 'ArrowRight':\n left += KEYBOARD_STEP;\n moved = true;\n break;\n case 'ArrowUp':\n top -= KEYBOARD_STEP;\n moved = true;\n break;\n case 'ArrowDown':\n top += KEYBOARD_STEP;\n moved = true;\n break;\n }\n if (!moved) return;\n ev.preventDefault();\n const next = clampToViewport({ x: left, y: top }, root);\n current = next;\n applyPosition(root, next);\n savePanelPosition(storageKey, next);\n onChange?.(next);\n }\n root.addEventListener('keydown', onKey);\n\n return {\n restore: () => applyPosition(root, current),\n reset: () => {\n current = null;\n savePanelPosition(storageKey, null);\n clearPosition(root);\n onChange?.(null);\n },\n destroy: () => {\n handle.removeEventListener('pointerdown', onPointerDown);\n handle.removeEventListener('pointermove', onPointerMove);\n handle.removeEventListener('pointerup', onPointerUp);\n handle.removeEventListener('pointercancel', onPointerUp);\n root.removeEventListener('keydown', onKey);\n },\n };\n}\n\nfunction applyPosition(root: HTMLElement, pos: PanelPosition | null): void {\n if (!pos) {\n clearPosition(root);\n return;\n }\n root.style.left = `${pos.x}px`;\n root.style.top = `${pos.y}px`;\n root.style.right = 'auto';\n root.style.bottom = 'auto';\n root.setAttribute('data-aw-moved', '1');\n}\n\nfunction clearPosition(root: HTMLElement): void {\n root.style.left = '';\n root.style.top = '';\n root.style.right = '';\n root.style.bottom = '';\n root.removeAttribute('data-aw-moved');\n}\n\nfunction clampToViewport(pos: PanelPosition, root: HTMLElement): PanelPosition {\n const rect = root.getBoundingClientRect();\n const maxX = window.innerWidth - rect.width - EDGE_MARGIN;\n const maxY = window.innerHeight - rect.height - EDGE_MARGIN;\n return {\n x: Math.max(EDGE_MARGIN, Math.min(pos.x, Math.max(EDGE_MARGIN, maxX))),\n y: Math.max(EDGE_MARGIN, Math.min(pos.y, Math.max(EDGE_MARGIN, maxY))),\n };\n}\n", "import type { Translation } from './types.js';\n\nexport const de: Translation = {\n title: 'Barrierefreiheit',\n close: 'Schlie\u00DFen',\n reset: 'Alle Einstellungen zur\u00FCcksetzen',\n resetDone: 'Einstellungen zur\u00FCckgesetzt.',\n profiles: {\n h: 'Profile',\n visionImpaired: 'Sehbehinderung',\n motor: 'Motorik',\n cognitive: 'Kognition / Lesehilfe',\n seizureSafe: 'Anfallsicher',\n adhd: 'ADHS / Fokus',\n blind: 'Blind (Screenreader)',\n },\n features: {\n h: 'Einzelne Einstellungen',\n fontSize: 'Schriftgr\u00F6\u00DFe',\n lineHeight: 'Zeilenabstand',\n letterSpacing: 'Buchstabenabstand',\n contrast: 'Kontrast',\n grayscale: 'Graustufen',\n invertColors: 'Farben invertieren',\n dyslexiaFont: 'Lese-Schrift (Dyslexie)',\n highlightLinks: 'Links hervorheben',\n pauseAnimations: 'Animationen pausieren',\n bigCursor: 'Gro\u00DFer Cursor',\n focusOutline: 'Dicker Fokusrahmen',\n readingMask: 'Lesemaske',\n readingGuide: 'Lesef\u00FChrung',\n tts: 'Vorlesen (Text-to-Speech)',\n structureNav: 'Strukturnavigation',\n },\n featureDescriptions: {\n fontSize: 'Vergr\u00F6\u00DFert den Seitentext in drei Stufen.',\n lineHeight: 'Vergr\u00F6\u00DFert den Zeilenabstand f\u00FCr besseres Lesen.',\n letterSpacing: 'Erh\u00F6ht den Abstand zwischen Buchstaben.',\n contrast: 'Wechselt zwischen normal, hoch, dunkel und invertiert.',\n grayscale: 'Entfernt Farben \u2014 hilfreich bei Lichtempfindlichkeit.',\n invertColors: 'Kehrt alle Farben um.',\n dyslexiaFont: 'Nutzt eine dyslexiefreundliche Schriftart.',\n highlightLinks: 'Hebt alle Links deutlich hervor.',\n pauseAnimations: 'Stoppt Animationen und \u00DCberg\u00E4nge.',\n bigCursor: 'Ersetzt den Mauszeiger durch eine gr\u00F6\u00DFere Variante.',\n focusOutline: 'Zeichnet einen dicken Rahmen um fokussierte Elemente.',\n readingMask: 'Verdunkelt die Seite bis auf einen Lesestreifen.',\n readingGuide: 'Horizontaler Lesef\u00FChrer folgt der Maus.',\n tts: 'Liest die Seite mit der Browser-Stimme vor.',\n structureNav: 'Listet alle \u00DCberschriften f\u00FCr schnelle Navigation.',\n },\n values: { off: 'Aus', on: 'An', step: 'Stufe' },\n contrastLabels: { off: 'Normal', high: 'Hoch', dark: 'Dunkel', invert: 'Invertiert' },\n aria: {\n dialog: 'Einstellungen zur Barrierefreiheit',\n switch: 'Umschalter f\u00FCr',\n triggerLabel: 'Barrierefreiheit einstellen',\n dragHandle: 'Panel verschieben',\n oversized: 'Vergr\u00F6\u00DFerte Darstellung',\n language: 'Sprache',\n info: 'Info zur Funktion',\n },\n poweredBy: 'Bereitgestellt von',\n statementLink: 'Barrierefreiheitserkl\u00E4rung',\n};\n", "import type { Translation } from './types.js';\n\nexport const en: Translation = {\n title: 'Accessibility',\n close: 'Close',\n reset: 'Reset all settings',\n resetDone: 'Settings reset.',\n profiles: {\n h: 'Profiles',\n visionImpaired: 'Vision impaired',\n motor: 'Motor',\n cognitive: 'Cognitive / reading aid',\n seizureSafe: 'Seizure-safe',\n adhd: 'ADHD / focus',\n blind: 'Blind (screen reader)',\n },\n features: {\n h: 'Individual settings',\n fontSize: 'Font size',\n lineHeight: 'Line height',\n letterSpacing: 'Letter spacing',\n contrast: 'Contrast',\n grayscale: 'Grayscale',\n invertColors: 'Invert colors',\n dyslexiaFont: 'Dyslexia font',\n highlightLinks: 'Highlight links',\n pauseAnimations: 'Pause animations',\n bigCursor: 'Big cursor',\n focusOutline: 'Thick focus ring',\n readingMask: 'Reading mask',\n readingGuide: 'Reading guide',\n tts: 'Read aloud (TTS)',\n structureNav: 'Structure navigation',\n },\n featureDescriptions: {\n fontSize: 'Scales page text through three larger steps.',\n lineHeight: 'Increases vertical space between lines.',\n letterSpacing: 'Adds space between letters for easier reading.',\n contrast: 'Cycles normal, high, dark and inverted contrast modes.',\n grayscale: 'Removes colour \u2014 useful for light sensitivity.',\n invertColors: 'Inverts all colours page-wide.',\n dyslexiaFont: 'Switches body text to a dyslexia-friendly typeface.',\n highlightLinks: 'Adds an underline and highlight to every link.',\n pauseAnimations: 'Stops animations and transitions.',\n bigCursor: 'Replaces the cursor with a larger version.',\n focusOutline: 'Draws a thick outline around focused elements.',\n readingMask: 'Dims the page except for a horizontal reading strip.',\n readingGuide: 'Follows the mouse with a horizontal guide bar.',\n tts: 'Reads the current page aloud using the browser voice.',\n structureNav: 'Lists headings for one-click navigation.',\n },\n values: { off: 'Off', on: 'On', step: 'step' },\n contrastLabels: { off: 'Normal', high: 'High', dark: 'Dark', invert: 'Inverted' },\n aria: {\n dialog: 'Accessibility settings',\n switch: 'Toggle for',\n triggerLabel: 'Accessibility settings',\n dragHandle: 'Move panel',\n oversized: 'Oversized widget',\n language: 'Language',\n info: 'About this feature',\n },\n poweredBy: 'Powered by',\n statementLink: 'Accessibility statement',\n};\n", "import type { Translation } from './types.js';\n\nexport const fr: Translation = {\n title: 'Accessibilit\u00E9',\n close: 'Fermer',\n reset: 'R\u00E9initialiser tous les r\u00E9glages',\n resetDone: 'R\u00E9glages r\u00E9initialis\u00E9s.',\n profiles: {\n h: 'Profils',\n visionImpaired: 'Malvoyance',\n motor: 'Motricit\u00E9',\n cognitive: 'Cognition / aide \u00E0 la lecture',\n seizureSafe: 'Anti-crise',\n adhd: 'TDAH / focus',\n blind: 'Aveugle (lecteur d\u2019\u00E9cran)',\n },\n features: {\n h: 'R\u00E9glages individuels',\n fontSize: 'Taille du texte',\n lineHeight: 'Hauteur de ligne',\n letterSpacing: 'Espacement des lettres',\n contrast: 'Contraste',\n grayscale: 'Niveaux de gris',\n invertColors: 'Inverser les couleurs',\n dyslexiaFont: 'Police dyslexie',\n highlightLinks: 'Surligner les liens',\n pauseAnimations: 'Pauser les animations',\n bigCursor: 'Grand curseur',\n focusOutline: 'Contour de focus \u00E9pais',\n readingMask: 'Masque de lecture',\n readingGuide: 'Guide de lecture',\n tts: 'Lecture \u00E0 voix haute',\n structureNav: 'Navigation par structure',\n },\n values: { off: 'Off', on: 'On', step: 'niveau' },\n contrastLabels: { off: 'Normal', high: '\u00C9lev\u00E9', dark: 'Sombre', invert: 'Invers\u00E9' },\n aria: {\n dialog: 'R\u00E9glages d\u2019accessibilit\u00E9',\n switch: 'Bascule pour',\n triggerLabel: 'R\u00E9glages d\u2019accessibilit\u00E9',\n dragHandle: 'D\u00E9placer le panneau',\n oversized: 'Widget agrandi',\n language: 'Langue',\n info: '\u00C0 propos de cette fonction',\n },\n poweredBy: 'Propuls\u00E9 par',\n statementLink: 'D\u00E9claration d\u2019accessibilit\u00E9',\n};\n", "import type { Translation } from './types.js';\n\nexport const es: Translation = {\n title: 'Accesibilidad',\n close: 'Cerrar',\n reset: 'Restablecer todos los ajustes',\n resetDone: 'Ajustes restablecidos.',\n profiles: {\n h: 'Perfiles',\n visionImpaired: 'Baja visi\u00F3n',\n motor: 'Motriz',\n cognitive: 'Cognitivo / ayuda a la lectura',\n seizureSafe: 'Seguro contra crisis',\n adhd: 'TDAH / enfoque',\n blind: 'Ciego (lector de pantalla)',\n },\n features: {\n h: 'Ajustes individuales',\n fontSize: 'Tama\u00F1o del texto',\n lineHeight: 'Altura de l\u00EDnea',\n letterSpacing: 'Espaciado entre letras',\n contrast: 'Contraste',\n grayscale: 'Escala de grises',\n invertColors: 'Invertir colores',\n dyslexiaFont: 'Fuente para dislexia',\n highlightLinks: 'Resaltar enlaces',\n pauseAnimations: 'Pausar animaciones',\n bigCursor: 'Cursor grande',\n focusOutline: 'Foco grueso',\n readingMask: 'M\u00E1scara de lectura',\n readingGuide: 'Gu\u00EDa de lectura',\n tts: 'Leer en voz alta',\n structureNav: 'Navegaci\u00F3n por estructura',\n },\n values: { off: 'No', on: 'S\u00ED', step: 'nivel' },\n contrastLabels: { off: 'Normal', high: 'Alto', dark: 'Oscuro', invert: 'Invertido' },\n aria: {\n dialog: 'Ajustes de accesibilidad',\n switch: 'Interruptor para',\n triggerLabel: 'Ajustes de accesibilidad',\n dragHandle: 'Mover el panel',\n oversized: 'Widget ampliado',\n language: 'Idioma',\n info: 'Acerca de esta funci\u00F3n',\n },\n poweredBy: 'Desarrollado por',\n statementLink: 'Declaraci\u00F3n de accesibilidad',\n};\n", "import type { Translation } from './types.js';\n\nexport const it: Translation = {\n title: 'Accessibilit\u00E0',\n close: 'Chiudi',\n reset: 'Reimposta tutte le impostazioni',\n resetDone: 'Impostazioni reimpostate.',\n profiles: {\n h: 'Profili',\n visionImpaired: 'Ipovedenti',\n motor: 'Motorio',\n cognitive: 'Cognitivo / lettura',\n seizureSafe: 'Anti-crisi',\n adhd: 'ADHD / focus',\n blind: 'Cieco (screen reader)',\n },\n features: {\n h: 'Impostazioni individuali',\n fontSize: 'Dimensione testo',\n lineHeight: 'Altezza riga',\n letterSpacing: 'Spaziatura lettere',\n contrast: 'Contrasto',\n grayscale: 'Scala di grigi',\n invertColors: 'Inverti colori',\n dyslexiaFont: 'Font dislessia',\n highlightLinks: 'Evidenzia link',\n pauseAnimations: 'Pausa animazioni',\n bigCursor: 'Cursore grande',\n focusOutline: 'Bordo focus spesso',\n readingMask: 'Maschera di lettura',\n readingGuide: 'Guida di lettura',\n tts: 'Leggi ad alta voce',\n structureNav: 'Navigazione struttura',\n },\n values: { off: 'No', on: 'S\u00EC', step: 'livello' },\n contrastLabels: { off: 'Normale', high: 'Alto', dark: 'Scuro', invert: 'Invertito' },\n aria: {\n dialog: 'Impostazioni di accessibilit\u00E0',\n switch: 'Interruttore per',\n triggerLabel: 'Impostazioni di accessibilit\u00E0',\n dragHandle: 'Sposta il pannello',\n oversized: 'Widget ingrandito',\n language: 'Lingua',\n info: 'Informazioni su questa funzione',\n },\n poweredBy: 'Realizzato da',\n statementLink: 'Dichiarazione di accessibilit\u00E0',\n};\n", "import type { Translation } from './types.js';\n\nexport const pl: Translation = {\n title: 'Dost\u0119pno\u015B\u0107',\n close: 'Zamknij',\n reset: 'Zresetuj wszystkie ustawienia',\n resetDone: 'Ustawienia zresetowane.',\n profiles: {\n h: 'Profile',\n visionImpaired: 'S\u0142abowidz\u0105cy',\n motor: 'Motoryczny',\n cognitive: 'Poznawczy / pomoc w czytaniu',\n seizureSafe: 'Bezpieczny dla padaczki',\n adhd: 'ADHD / skupienie',\n blind: 'Niewidomy (czytnik ekranu)',\n },\n features: {\n h: 'Ustawienia indywidualne',\n fontSize: 'Rozmiar czcionki',\n lineHeight: 'Wysoko\u015B\u0107 linii',\n letterSpacing: 'Odst\u0119py mi\u0119dzy literami',\n contrast: 'Kontrast',\n grayscale: 'Skala szaro\u015Bci',\n invertColors: 'Odwr\u00F3\u0107 kolory',\n dyslexiaFont: 'Czcionka dla dyslektyk\u00F3w',\n highlightLinks: 'Wyr\u00F3\u017Cnij linki',\n pauseAnimations: 'Wstrzymaj animacje',\n bigCursor: 'Du\u017Cy kursor',\n focusOutline: 'Grubszy focus',\n readingMask: 'Maska czytania',\n readingGuide: 'Linijka czytania',\n tts: 'Czytaj na g\u0142os',\n structureNav: 'Nawigacja po strukturze',\n },\n values: { off: 'Wy\u0142.', on: 'W\u0142.', step: 'poziom' },\n contrastLabels: { off: 'Normalny', high: 'Wysoki', dark: 'Ciemny', invert: 'Odwr\u00F3cony' },\n aria: {\n dialog: 'Ustawienia dost\u0119pno\u015Bci',\n switch: 'Prze\u0142\u0105cznik dla',\n triggerLabel: 'Ustawienia dost\u0119pno\u015Bci',\n dragHandle: 'Przenie\u015B panel',\n oversized: 'Powi\u0119kszony widget',\n language: 'J\u0119zyk',\n info: 'O tej funkcji',\n },\n poweredBy: 'Dostarczone przez',\n statementLink: 'O\u015Bwiadczenie o dost\u0119pno\u015Bci',\n};\n", "import type { Translation } from './types.js';\n\nexport const tr: Translation = {\n title: 'Eri\u015Filebilirlik',\n close: 'Kapat',\n reset: 'T\u00FCm ayarlar\u0131 s\u0131f\u0131rla',\n resetDone: 'Ayarlar s\u0131f\u0131rland\u0131.',\n profiles: {\n h: 'Profiller',\n visionImpaired: 'G\u00F6rme engelli',\n motor: 'Motor',\n cognitive: 'Bili\u015Fsel / okuma yard\u0131m\u0131',\n seizureSafe: 'N\u00F6bet g\u00FCvenli',\n adhd: 'DEHB / odak',\n blind: 'G\u00F6rme engelli (ekran okuyucu)',\n },\n features: {\n h: 'Bireysel ayarlar',\n fontSize: 'Yaz\u0131 boyutu',\n lineHeight: 'Sat\u0131r y\u00FCksekli\u011Fi',\n letterSpacing: 'Harf aral\u0131\u011F\u0131',\n contrast: 'Kontrast',\n grayscale: 'Gri tonlama',\n invertColors: 'Renkleri ters \u00E7evir',\n dyslexiaFont: 'Disleksi yaz\u0131 tipi',\n highlightLinks: 'Ba\u011Flant\u0131lar\u0131 vurgula',\n pauseAnimations: 'Animasyonlar\u0131 duraklat',\n bigCursor: 'B\u00FCy\u00FCk imle\u00E7',\n focusOutline: 'Kal\u0131n odak \u00E7er\u00E7evesi',\n readingMask: 'Okuma maskesi',\n readingGuide: 'Okuma k\u0131lavuzu',\n tts: 'Sesli oku',\n structureNav: 'Yap\u0131 gezintisi',\n },\n values: { off: 'Kapal\u0131', on: 'A\u00E7\u0131k', step: 'ad\u0131m' },\n contrastLabels: { off: 'Normal', high: 'Y\u00FCksek', dark: 'Koyu', invert: 'Ters' },\n aria: {\n dialog: 'Eri\u015Filebilirlik ayarlar\u0131',\n switch: 'Anahtar:',\n triggerLabel: 'Eri\u015Filebilirlik ayarlar\u0131',\n dragHandle: 'Paneli ta\u015F\u0131',\n oversized: 'B\u00FCy\u00FCt\u00FClm\u00FC\u015F widget',\n language: 'Dil',\n info: 'Bu \u00F6zellik hakk\u0131nda',\n },\n poweredBy: 'Geli\u015Ftiren',\n statementLink: 'Eri\u015Filebilirlik beyan\u0131',\n};\n", "import type { Translation } from './types.js';\n\nexport const ar: Translation = {\n title: '\u0625\u0645\u0643\u0627\u0646\u064A\u0629 \u0627\u0644\u0648\u0635\u0648\u0644',\n close: '\u0625\u063A\u0644\u0627\u0642',\n reset: '\u0625\u0639\u0627\u062F\u0629 \u062A\u0639\u064A\u064A\u0646 \u062C\u0645\u064A\u0639 \u0627\u0644\u0625\u0639\u062F\u0627\u062F\u0627\u062A',\n resetDone: '\u062A\u0645\u062A \u0625\u0639\u0627\u062F\u0629 \u0627\u0644\u062A\u0639\u064A\u064A\u0646.',\n profiles: {\n h: '\u0645\u0644\u0641\u0627\u062A \u0627\u0644\u062A\u0639\u0631\u064A\u0641',\n visionImpaired: '\u0636\u0639\u0641 \u0627\u0644\u0628\u0635\u0631',\n motor: '\u062D\u0631\u0643\u064A',\n cognitive: '\u0645\u0639\u0631\u0641\u064A / \u0645\u0633\u0627\u0639\u062F\u0629 \u0627\u0644\u0642\u0631\u0627\u0621\u0629',\n seizureSafe: '\u0622\u0645\u0646 \u0645\u0646 \u0627\u0644\u0646\u0648\u0628\u0627\u062A',\n adhd: '\u0627\u0636\u0637\u0631\u0627\u0628 \u0641\u0631\u0637 \u0627\u0644\u062D\u0631\u0643\u0629 / \u0627\u0644\u062A\u0631\u0643\u064A\u0632',\n blind: '\u0643\u0641\u064A\u0641 (\u0642\u0627\u0631\u0626 \u0627\u0644\u0634\u0627\u0634\u0629)',\n },\n features: {\n h: '\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0641\u0631\u062F\u064A\u0629',\n fontSize: '\u062D\u062C\u0645 \u0627\u0644\u062E\u0637',\n lineHeight: '\u0627\u0631\u062A\u0641\u0627\u0639 \u0627\u0644\u0633\u0637\u0631',\n letterSpacing: '\u062A\u0628\u0627\u0639\u062F \u0627\u0644\u0623\u062D\u0631\u0641',\n contrast: '\u0627\u0644\u062A\u0628\u0627\u064A\u0646',\n grayscale: '\u062A\u062F\u0631\u062C \u0627\u0644\u0631\u0645\u0627\u062F\u064A',\n invertColors: '\u0639\u0643\u0633 \u0627\u0644\u0623\u0644\u0648\u0627\u0646',\n dyslexiaFont: '\u062E\u0637 \u0639\u0633\u0631 \u0627\u0644\u0642\u0631\u0627\u0621\u0629',\n highlightLinks: '\u062A\u0645\u064A\u064A\u0632 \u0627\u0644\u0631\u0648\u0627\u0628\u0637',\n pauseAnimations: '\u0625\u064A\u0642\u0627\u0641 \u0627\u0644\u062D\u0631\u0643\u0627\u062A',\n bigCursor: '\u0645\u0624\u0634\u0631 \u0643\u0628\u064A\u0631',\n focusOutline: '\u0625\u0637\u0627\u0631 \u062A\u0631\u0643\u064A\u0632 \u0633\u0645\u064A\u0643',\n readingMask: '\u0642\u0646\u0627\u0639 \u0627\u0644\u0642\u0631\u0627\u0621\u0629',\n readingGuide: '\u062F\u0644\u064A\u0644 \u0627\u0644\u0642\u0631\u0627\u0621\u0629',\n tts: '\u0642\u0631\u0627\u0621\u0629 \u0628\u0635\u0648\u062A \u0639\u0627\u0644\u064D',\n structureNav: '\u0627\u0644\u062A\u0646\u0642\u0644 \u062D\u0633\u0628 \u0627\u0644\u0628\u0646\u064A\u0629',\n },\n values: { off: '\u0645\u063A\u0644\u0642', on: '\u0645\u0641\u0639\u0644', step: '\u0645\u0633\u062A\u0648\u0649' },\n contrastLabels: { off: '\u0639\u0627\u062F\u064A', high: '\u0645\u0631\u062A\u0641\u0639', dark: '\u062F\u0627\u0643\u0646', invert: '\u0645\u0642\u0644\u0648\u0628' },\n aria: {\n dialog: '\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0645\u0643\u0627\u0646\u064A\u0629 \u0627\u0644\u0648\u0635\u0648\u0644',\n switch: '\u0645\u0641\u062A\u0627\u062D:',\n triggerLabel: '\u0625\u0639\u062F\u0627\u062F\u0627\u062A \u0625\u0645\u0643\u0627\u0646\u064A\u0629 \u0627\u0644\u0648\u0635\u0648\u0644',\n dragHandle: '\u062A\u062D\u0631\u064A\u0643 \u0627\u0644\u0644\u0648\u062D\u0629',\n oversized: '\u0623\u062F\u0627\u0629 \u0645\u0643\u0628\u0651\u0631\u0629',\n language: '\u0627\u0644\u0644\u063A\u0629',\n info: '\u0639\u0646 \u0647\u0630\u0647 \u0627\u0644\u0645\u064A\u0632\u0629',\n },\n poweredBy: '\u0628\u062F\u0639\u0645 \u0645\u0646',\n statementLink: '\u0628\u064A\u0627\u0646 \u0625\u0645\u0643\u0627\u0646\u064A\u0629 \u0627\u0644\u0648\u0635\u0648\u0644',\n};\n", "import type { Translation } from './types.js';\n\nexport const zh: Translation = {\n title: '\u65E0\u969C\u788D',\n close: '\u5173\u95ED',\n reset: '\u91CD\u7F6E\u6240\u6709\u8BBE\u7F6E',\n resetDone: '\u8BBE\u7F6E\u5DF2\u91CD\u7F6E\u3002',\n profiles: {\n h: '\u914D\u7F6E\u65B9\u6848',\n visionImpaired: '\u89C6\u529B\u969C\u788D',\n motor: '\u8FD0\u52A8\u969C\u788D',\n cognitive: '\u8BA4\u77E5 / \u9605\u8BFB\u8F85\u52A9',\n seizureSafe: '\u766B\u75EB\u5B89\u5168',\n adhd: 'ADHD / \u4E13\u6CE8',\n blind: '\u76F2\u4EBA(\u5C4F\u5E55\u9605\u8BFB\u5668)',\n },\n features: {\n h: '\u5355\u9879\u8BBE\u7F6E',\n fontSize: '\u5B57\u53F7',\n lineHeight: '\u884C\u8DDD',\n letterSpacing: '\u5B57\u8DDD',\n contrast: '\u5BF9\u6BD4\u5EA6',\n grayscale: '\u7070\u5EA6',\n invertColors: '\u53CD\u8272',\n dyslexiaFont: '\u9605\u8BFB\u969C\u788D\u5B57\u4F53',\n highlightLinks: '\u7A81\u51FA\u663E\u793A\u94FE\u63A5',\n pauseAnimations: '\u6682\u505C\u52A8\u753B',\n bigCursor: '\u5927\u5149\u6807',\n focusOutline: '\u7C97\u7126\u70B9\u6846',\n readingMask: '\u9605\u8BFB\u906E\u7F69',\n readingGuide: '\u9605\u8BFB\u5F15\u5BFC',\n tts: '\u6717\u8BFB(\u6587\u672C\u8F6C\u8BED\u97F3)',\n structureNav: '\u7ED3\u6784\u5BFC\u822A',\n },\n values: { off: '\u5173', on: '\u5F00', step: '\u7EA7' },\n contrastLabels: { off: '\u666E\u901A', high: '\u9AD8', dark: '\u6DF1\u8272', invert: '\u53CD\u8F6C' },\n aria: {\n dialog: '\u65E0\u969C\u788D\u8BBE\u7F6E',\n switch: '\u5207\u6362\u5F00\u5173',\n triggerLabel: '\u65E0\u969C\u788D\u8BBE\u7F6E',\n dragHandle: '\u79FB\u52A8\u9762\u677F',\n oversized: '\u52A0\u5927\u63A7\u4EF6',\n language: '\u8BED\u8A00',\n info: '\u5173\u4E8E\u6B64\u529F\u80FD',\n },\n poweredBy: '\u6280\u672F\u652F\u6301',\n statementLink: '\u65E0\u969C\u788D\u58F0\u660E',\n};\n", "import type { Translation } from './types.js';\n\nexport const hi: Translation = {\n title: '\u0938\u0941\u0917\u092E\u094D\u092F\u0924\u093E',\n close: '\u092C\u0902\u0926 \u0915\u0930\u0947\u0902',\n reset: '\u0938\u092D\u0940 \u0938\u0947\u091F\u093F\u0902\u0917\u094D\u0938 \u0930\u0940\u0938\u0947\u091F \u0915\u0930\u0947\u0902',\n resetDone: '\u0938\u0947\u091F\u093F\u0902\u0917\u094D\u0938 \u0930\u0940\u0938\u0947\u091F \u0939\u094B \u0917\u0908\u0902\u0964',\n profiles: {\n h: '\u092A\u094D\u0930\u094B\u092B\u093C\u093E\u0907\u0932',\n visionImpaired: '\u0926\u0943\u0937\u094D\u091F\u093F\u092C\u093E\u0927\u093F\u0924',\n motor: '\u092E\u094B\u091F\u0930 / \u0917\u0924\u093F\u0935\u093F\u0927\u093F',\n cognitive: '\u0938\u0902\u091C\u094D\u091E\u093E\u0928\u093E\u0924\u094D\u092E\u0915 / \u092A\u0920\u0928 \u0938\u0939\u093E\u092F\u0924\u093E',\n seizureSafe: '\u0926\u094C\u0930\u093E-\u0938\u0941\u0930\u0915\u094D\u0937\u093F\u0924',\n adhd: 'ADHD / \u090F\u0915\u093E\u0917\u094D\u0930\u0924\u093E',\n blind: '\u0926\u0943\u0937\u094D\u091F\u093F\u0939\u0940\u0928 (\u0938\u094D\u0915\u094D\u0930\u0940\u0928 \u0930\u0940\u0921\u0930)',\n },\n features: {\n h: '\u090F\u0915\u0932 \u0938\u0947\u091F\u093F\u0902\u0917\u094D\u0938',\n fontSize: '\u092B\u093C\u0949\u0928\u094D\u091F \u0906\u0915\u093E\u0930',\n lineHeight: '\u092A\u0902\u0915\u094D\u0924\u093F \u090A\u0901\u091A\u093E\u0908',\n letterSpacing: '\u0905\u0915\u094D\u0937\u0930 \u0905\u0902\u0924\u0930',\n contrast: '\u0915\u0902\u091F\u094D\u0930\u093E\u0938\u094D\u091F',\n grayscale: '\u0917\u094D\u0930\u0947\u0938\u094D\u0915\u0947\u0932',\n invertColors: '\u0930\u0902\u0917 \u0909\u0932\u091F\u0947\u0902',\n dyslexiaFont: '\u0921\u093F\u0938\u094D\u0932\u0947\u0915\u094D\u0938\u093F\u092F\u093E \u092B\u093C\u0949\u0928\u094D\u091F',\n highlightLinks: '\u0932\u093F\u0902\u0915 \u0939\u093E\u0907\u0932\u093E\u0907\u091F \u0915\u0930\u0947\u0902',\n pauseAnimations: '\u090F\u0928\u093F\u092E\u0947\u0936\u0928 \u0930\u094B\u0915\u0947\u0902',\n bigCursor: '\u092C\u0921\u093C\u093E \u0915\u0930\u094D\u0938\u0930',\n focusOutline: '\u092E\u094B\u091F\u093E \u092B\u093C\u094B\u0915\u0938 \u0930\u0947\u0916\u093E',\n readingMask: '\u092A\u0920\u0928 \u092E\u093E\u0938\u094D\u0915',\n readingGuide: '\u092A\u0920\u0928 \u0917\u093E\u0907\u0921',\n tts: '\u092A\u0922\u093C\u0915\u0930 \u0938\u0941\u0928\u093E\u090F\u0901 (TTS)',\n structureNav: '\u0938\u0902\u0930\u091A\u0928\u093E \u0928\u0947\u0935\u093F\u0917\u0947\u0936\u0928',\n },\n values: { off: '\u092C\u0902\u0926', on: '\u091A\u093E\u0932\u0942', step: '\u0938\u094D\u0924\u0930' },\n contrastLabels: { off: '\u0938\u093E\u092E\u093E\u0928\u094D\u092F', high: '\u0909\u091A\u094D\u091A', dark: '\u0917\u0939\u0930\u093E', invert: '\u0909\u0932\u091F\u093E' },\n aria: {\n dialog: '\u0938\u0941\u0917\u092E\u094D\u092F\u0924\u093E \u0938\u0947\u091F\u093F\u0902\u0917\u094D\u0938',\n switch: '\u0938\u094D\u0935\u093F\u091A',\n triggerLabel: '\u0938\u0941\u0917\u092E\u094D\u092F\u0924\u093E \u0938\u0947\u091F\u093F\u0902\u0917\u094D\u0938',\n dragHandle: '\u092A\u0948\u0928\u0932 \u0932\u0947 \u091C\u093E\u090F\u0901',\n oversized: '\u092C\u0921\u093C\u093E \u0935\u093F\u091C\u0947\u091F',\n language: '\u092D\u093E\u0937\u093E',\n info: '\u0907\u0938 \u0938\u0941\u0935\u093F\u0927\u093E \u0915\u0947 \u092C\u093E\u0930\u0947 \u092E\u0947\u0902',\n },\n poweredBy: '\u0926\u094D\u0935\u093E\u0930\u093E \u0938\u0902\u091A\u093E\u0932\u093F\u0924',\n statementLink: '\u0938\u0941\u0917\u092E\u094D\u092F\u0924\u093E \u0935\u0915\u094D\u0924\u0935\u094D\u092F',\n};\n", "import type { Translation } from './types.js';\n\nexport const pt: Translation = {\n title: 'Acessibilidade',\n close: 'Fechar',\n reset: 'Repor todas as defini\u00E7\u00F5es',\n resetDone: 'Defini\u00E7\u00F5es repostas.',\n profiles: {\n h: 'Perfis',\n visionImpaired: 'Baixa vis\u00E3o',\n motor: 'Motor',\n cognitive: 'Cognitivo / ajuda de leitura',\n seizureSafe: 'Seguro para epilepsia',\n adhd: 'TDAH / foco',\n blind: 'Cego (leitor de ecr\u00E3)',\n },\n features: {\n h: 'Configura\u00E7\u00F5es individuais',\n fontSize: 'Tamanho do texto',\n lineHeight: 'Altura de linha',\n letterSpacing: 'Espa\u00E7amento entre letras',\n contrast: 'Contraste',\n grayscale: 'Tons de cinzento',\n invertColors: 'Inverter cores',\n dyslexiaFont: 'Tipo de letra para dislexia',\n highlightLinks: 'Real\u00E7ar liga\u00E7\u00F5es',\n pauseAnimations: 'Pausar anima\u00E7\u00F5es',\n bigCursor: 'Cursor grande',\n focusOutline: 'Contorno de foco espesso',\n readingMask: 'M\u00E1scara de leitura',\n readingGuide: 'Guia de leitura',\n tts: 'Ler em voz alta (TTS)',\n structureNav: 'Navega\u00E7\u00E3o por estrutura',\n },\n values: { off: 'Desl.', on: 'Ligado', step: 'n\u00EDvel' },\n contrastLabels: { off: 'Normal', high: 'Alto', dark: 'Escuro', invert: 'Invertido' },\n aria: {\n dialog: 'Defini\u00E7\u00F5es de acessibilidade',\n switch: 'Alternar',\n triggerLabel: 'Defini\u00E7\u00F5es de acessibilidade',\n dragHandle: 'Mover painel',\n oversized: 'Widget ampliado',\n language: 'Idioma',\n info: 'Sobre esta funcionalidade',\n },\n poweredBy: 'Desenvolvido por',\n statementLink: 'Declara\u00E7\u00E3o de acessibilidade',\n};\n", "import type { Translation } from './types.js';\n\nexport const bn: Translation = {\n title: '\u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8\u09AF\u09CB\u0997\u09CD\u09AF\u09A4\u09BE',\n close: '\u09AC\u09A8\u09CD\u09A7 \u0995\u09B0\u09C1\u09A8',\n reset: '\u09B8\u09AC \u09B8\u09C7\u099F\u09BF\u0982\u09B8 \u09B0\u09BF\u09B8\u09C7\u099F \u0995\u09B0\u09C1\u09A8',\n resetDone: '\u09B8\u09C7\u099F\u09BF\u0982\u09B8 \u09B0\u09BF\u09B8\u09C7\u099F \u09B9\u09AF\u09BC\u09C7\u099B\u09C7\u0964',\n profiles: {\n h: '\u09AA\u09CD\u09B0\u09CB\u09AB\u09BE\u0987\u09B2',\n visionImpaired: '\u09A6\u09C3\u09B7\u09CD\u099F\u09BF\u09AA\u09CD\u09B0\u09A4\u09BF\u09AC\u09A8\u09CD\u09A7\u09C0',\n motor: '\u09AE\u09CB\u099F\u09B0 / \u099A\u09B2\u09A8',\n cognitive: '\u099C\u09CD\u099E\u09BE\u09A8\u09C0\u09AF\u09BC / \u09AA\u09BE\u09A0 \u09B8\u09B9\u09BE\u09AF\u09BC\u09A4\u09BE',\n seizureSafe: '\u0996\u09BF\u0981\u099A\u09C1\u09A8\u09BF-\u09A8\u09BF\u09B0\u09BE\u09AA\u09A6',\n adhd: 'ADHD / \u09AE\u09A8\u09CB\u09A8\u09BF\u09AC\u09C7\u09B6',\n blind: '\u0985\u09A8\u09CD\u09A7 (\u09B8\u09CD\u0995\u09CD\u09B0\u09BF\u09A8 \u09B0\u09BF\u09A1\u09BE\u09B0)',\n },\n features: {\n h: '\u098F\u0995\u0995 \u09B8\u09C7\u099F\u09BF\u0982\u09B8',\n fontSize: '\u09B9\u09B0\u09AB\u09C7\u09B0 \u0986\u0995\u09BE\u09B0',\n lineHeight: '\u09AA\u0999\u0995\u09CD\u09A4\u09BF\u09B0 \u0989\u099A\u09CD\u099A\u09A4\u09BE',\n letterSpacing: '\u0985\u0995\u09CD\u09B7\u09B0\u09C7\u09B0 \u09AC\u09CD\u09AF\u09AC\u09A7\u09BE\u09A8',\n contrast: '\u0995\u09A8\u099F\u09CD\u09B0\u09BE\u09B8\u09CD\u099F',\n grayscale: '\u0997\u09CD\u09B0\u09C7\u09B8\u09CD\u0995\u09C7\u09B2',\n invertColors: '\u09B0\u0982 \u0989\u09B2\u09CD\u099F\u09C7 \u09A6\u09BF\u09A8',\n dyslexiaFont: '\u09A1\u09BF\u09B8\u09B2\u09C7\u0995\u09CD\u09B8\u09BF\u09AF\u09BC\u09BE \u09AB\u09A8\u09CD\u099F',\n highlightLinks: '\u09B2\u09BF\u0999\u09CD\u0995\u0997\u09C1\u09B2\u09BF \u099A\u09BF\u09B9\u09CD\u09A8\u09BF\u09A4 \u0995\u09B0\u09C1\u09A8',\n pauseAnimations: '\u0985\u09CD\u09AF\u09BE\u09A8\u09BF\u09AE\u09C7\u09B6\u09A8 \u09A5\u09BE\u09AE\u09BE\u09A8',\n bigCursor: '\u09AC\u09A1\u09BC \u0995\u09BE\u09B0\u09CD\u09B8\u09B0',\n focusOutline: '\u09AE\u09CB\u099F\u09BE \u09AB\u09CB\u0995\u09BE\u09B8 \u09B0\u09C7\u0996\u09BE',\n readingMask: '\u09AA\u09A0\u09A8 \u09AE\u09C1\u0996\u09CB\u09B6',\n readingGuide: '\u09AA\u09A0\u09A8 \u0997\u09BE\u0987\u09A1',\n tts: '\u09AA\u09A1\u09BC\u09C7 \u09B6\u09CB\u09A8\u09BE\u09A8 (TTS)',\n structureNav: '\u0995\u09BE\u09A0\u09BE\u09AE\u09CB \u09A8\u09C7\u09AD\u09BF\u0997\u09C7\u09B6\u09A8',\n },\n values: { off: '\u09AC\u09A8\u09CD\u09A7', on: '\u099A\u09BE\u09B2\u09C1', step: '\u09B8\u09CD\u09A4\u09B0' },\n contrastLabels: { off: '\u09B8\u09BE\u09A7\u09BE\u09B0\u09A3', high: '\u0989\u099A\u09CD\u099A', dark: '\u0997\u09BE\u09A2\u09BC', invert: '\u0989\u09B2\u09CD\u099F\u09BE\u09A8\u09CB' },\n aria: {\n dialog: '\u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8\u09AF\u09CB\u0997\u09CD\u09AF\u09A4\u09BE \u09B8\u09C7\u099F\u09BF\u0982\u09B8',\n switch: '\u099F\u0997\u09B2',\n triggerLabel: '\u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8\u09AF\u09CB\u0997\u09CD\u09AF\u09A4\u09BE \u09B8\u09C7\u099F\u09BF\u0982\u09B8',\n dragHandle: '\u09AA\u09CD\u09AF\u09BE\u09A8\u09C7\u09B2 \u09B8\u09B0\u09BE\u09A8',\n oversized: '\u09AC\u09A1\u09BC \u0989\u0987\u099C\u09C7\u099F',\n language: '\u09AD\u09BE\u09B7\u09BE',\n info: '\u098F\u0987 \u09AC\u09C8\u09B6\u09BF\u09B7\u09CD\u099F\u09CD\u09AF \u09B8\u09AE\u09CD\u09AA\u09B0\u09CD\u0995\u09C7',\n },\n poweredBy: '\u09A6\u09CD\u09AC\u09BE\u09B0\u09BE \u099A\u09BE\u09B2\u09BF\u09A4',\n statementLink: '\u0985\u09CD\u09AF\u09BE\u0995\u09CD\u09B8\u09C7\u09B8\u09AF\u09CB\u0997\u09CD\u09AF\u09A4\u09BE \u09AC\u09BF\u09AC\u09C3\u09A4\u09BF',\n};\n", "import type { Translation } from './types.js';\n\nexport const ru: Translation = {\n title: '\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C',\n close: '\u0417\u0430\u043A\u0440\u044B\u0442\u044C',\n reset: '\u0421\u0431\u0440\u043E\u0441\u0438\u0442\u044C \u0432\u0441\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438',\n resetDone: '\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0441\u0431\u0440\u043E\u0448\u0435\u043D\u044B.',\n profiles: {\n h: '\u041F\u0440\u043E\u0444\u0438\u043B\u0438',\n visionImpaired: '\u0421\u043B\u0430\u0431\u043E\u0432\u0438\u0434\u044F\u0449\u0438\u0435',\n motor: '\u041C\u043E\u0442\u043E\u0440\u0438\u043A\u0430',\n cognitive: '\u041A\u043E\u0433\u043D\u0438\u0442\u0438\u0432\u043D\u044B\u0435 / \u043F\u043E\u043C\u043E\u0449\u044C \u0447\u0442\u0435\u043D\u0438\u044E',\n seizureSafe: '\u0411\u0435\u0437\u043E\u043F\u0430\u0441\u043D\u043E \u043F\u0440\u0438 \u044D\u043F\u0438\u043B\u0435\u043F\u0441\u0438\u0438',\n adhd: '\u0421\u0414\u0412\u0413 / \u0444\u043E\u043A\u0443\u0441',\n blind: '\u0421\u043B\u0435\u043F\u044B\u0435 (\u044D\u043A\u0440\u0430\u043D\u043D\u044B\u0439 \u0434\u0438\u043A\u0442\u043E\u0440)',\n },\n features: {\n h: '\u041E\u0442\u0434\u0435\u043B\u044C\u043D\u044B\u0435 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438',\n fontSize: '\u0420\u0430\u0437\u043C\u0435\u0440 \u0448\u0440\u0438\u0444\u0442\u0430',\n lineHeight: '\u041C\u0435\u0436\u0441\u0442\u0440\u043E\u0447\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B',\n letterSpacing: '\u041C\u0435\u0436\u0431\u0443\u043A\u0432\u0435\u043D\u043D\u044B\u0439 \u0438\u043D\u0442\u0435\u0440\u0432\u0430\u043B',\n contrast: '\u041A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u043D\u043E\u0441\u0442\u044C',\n grayscale: '\u041E\u0442\u0442\u0435\u043D\u043A\u0438 \u0441\u0435\u0440\u043E\u0433\u043E',\n invertColors: '\u0418\u043D\u0432\u0435\u0440\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0446\u0432\u0435\u0442\u0430',\n dyslexiaFont: '\u0428\u0440\u0438\u0444\u0442 \u0434\u043B\u044F \u0434\u0438\u0441\u043B\u0435\u043A\u0441\u0438\u0438',\n highlightLinks: '\u0412\u044B\u0434\u0435\u043B\u044F\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0438',\n pauseAnimations: '\u041E\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u0442\u044C \u0430\u043D\u0438\u043C\u0430\u0446\u0438\u0438',\n bigCursor: '\u0411\u043E\u043B\u044C\u0448\u043E\u0439 \u043A\u0443\u0440\u0441\u043E\u0440',\n focusOutline: '\u0422\u043E\u043B\u0441\u0442\u0430\u044F \u0440\u0430\u043C\u043A\u0430 \u0444\u043E\u043A\u0443\u0441\u0430',\n readingMask: '\u041C\u0430\u0441\u043A\u0430 \u0447\u0442\u0435\u043D\u0438\u044F',\n readingGuide: '\u041D\u0430\u043F\u0440\u0430\u0432\u043B\u044F\u044E\u0449\u0430\u044F \u0447\u0442\u0435\u043D\u0438\u044F',\n tts: '\u041E\u0437\u0432\u0443\u0447\u0438\u0432\u0430\u043D\u0438\u0435 (TTS)',\n structureNav: '\u041D\u0430\u0432\u0438\u0433\u0430\u0446\u0438\u044F \u043F\u043E \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u0435',\n },\n values: { off: '\u0412\u044B\u043A\u043B.', on: '\u0412\u043A\u043B.', step: '\u0443\u0440\u043E\u0432\u0435\u043D\u044C' },\n contrastLabels: { off: '\u041E\u0431\u044B\u0447\u043D\u044B\u0439', high: '\u0412\u044B\u0441\u043E\u043A\u0438\u0439', dark: '\u0422\u0451\u043C\u043D\u044B\u0439', invert: '\u0418\u043D\u0432\u0435\u0440\u0441\u0438\u044F' },\n aria: {\n dialog: '\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u0438',\n switch: '\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0430\u0442\u0435\u043B\u044C',\n triggerLabel: '\u041D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u0438',\n dragHandle: '\u041F\u0435\u0440\u0435\u043C\u0435\u0441\u0442\u0438\u0442\u044C \u043F\u0430\u043D\u0435\u043B\u044C',\n oversized: '\u0423\u0432\u0435\u043B\u0438\u0447\u0435\u043D\u043D\u044B\u0439 \u0432\u0438\u0434\u0436\u0435\u0442',\n language: '\u042F\u0437\u044B\u043A',\n info: '\u041E\u0431 \u044D\u0442\u043E\u0439 \u0444\u0443\u043D\u043A\u0446\u0438\u0438',\n },\n poweredBy: '\u0420\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u043D\u0430',\n statementLink: '\u0414\u0435\u043A\u043B\u0430\u0440\u0430\u0446\u0438\u044F \u043E \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u0438',\n};\n", "import type { Translation } from './types.js';\n\nexport const ja: Translation = {\n title: '\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3',\n close: '\u9589\u3058\u308B',\n reset: '\u3059\u3079\u3066\u306E\u8A2D\u5B9A\u3092\u30EA\u30BB\u30C3\u30C8',\n resetDone: '\u8A2D\u5B9A\u3092\u30EA\u30BB\u30C3\u30C8\u3057\u307E\u3057\u305F\u3002',\n profiles: {\n h: '\u30D7\u30ED\u30D5\u30A1\u30A4\u30EB',\n visionImpaired: '\u8996\u899A\u969C\u5BB3',\n motor: '\u80A2\u4F53 / \u904B\u52D5',\n cognitive: '\u8A8D\u77E5 / \u8AAD\u66F8\u88DC\u52A9',\n seizureSafe: '\u767A\u4F5C\u5BFE\u5FDC',\n adhd: 'ADHD / \u96C6\u4E2D',\n blind: '\u5168\u76F2(\u30B9\u30AF\u30EA\u30FC\u30F3\u30EA\u30FC\u30C0\u30FC)',\n },\n features: {\n h: '\u500B\u5225\u8A2D\u5B9A',\n fontSize: '\u6587\u5B57\u30B5\u30A4\u30BA',\n lineHeight: '\u884C\u9593',\n letterSpacing: '\u5B57\u9593',\n contrast: '\u30B3\u30F3\u30C8\u30E9\u30B9\u30C8',\n grayscale: '\u30B0\u30EC\u30FC\u30B9\u30B1\u30FC\u30EB',\n invertColors: '\u8272\u3092\u53CD\u8EE2',\n dyslexiaFont: '\u30C7\u30A3\u30B9\u30EC\u30AF\u30B7\u30A2\u7528\u30D5\u30A9\u30F3\u30C8',\n highlightLinks: '\u30EA\u30F3\u30AF\u3092\u5F37\u8ABF',\n pauseAnimations: '\u30A2\u30CB\u30E1\u30FC\u30B7\u30E7\u30F3\u3092\u505C\u6B62',\n bigCursor: '\u5927\u304D\u3044\u30AB\u30FC\u30BD\u30EB',\n focusOutline: '\u592A\u3044\u30D5\u30A9\u30FC\u30AB\u30B9\u67A0',\n readingMask: '\u8AAD\u66F8\u30DE\u30B9\u30AF',\n readingGuide: '\u8AAD\u66F8\u30AC\u30A4\u30C9',\n tts: '\u8AAD\u307F\u4E0A\u3052(TTS)',\n structureNav: '\u69CB\u9020\u30CA\u30D3\u30B2\u30FC\u30B7\u30E7\u30F3',\n },\n values: { off: '\u30AA\u30D5', on: '\u30AA\u30F3', step: '\u6BB5\u968E' },\n contrastLabels: { off: '\u901A\u5E38', high: '\u9AD8', dark: '\u30C0\u30FC\u30AF', invert: '\u53CD\u8EE2' },\n aria: {\n dialog: '\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u8A2D\u5B9A',\n switch: '\u5207\u66FF',\n triggerLabel: '\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u8A2D\u5B9A',\n dragHandle: '\u30D1\u30CD\u30EB\u3092\u79FB\u52D5',\n oversized: '\u62E1\u5927\u30A6\u30A3\u30B8\u30A7\u30C3\u30C8',\n language: '\u8A00\u8A9E',\n info: '\u3053\u306E\u6A5F\u80FD\u306B\u3064\u3044\u3066',\n },\n poweredBy: '\u63D0\u4F9B',\n statementLink: '\u30A2\u30AF\u30BB\u30B7\u30D3\u30EA\u30C6\u30A3\u58F0\u660E',\n};\n", "import type { Translation } from './types.js';\n\nexport const ko: Translation = {\n title: '\uC811\uADFC\uC131',\n close: '\uB2EB\uAE30',\n reset: '\uBAA8\uB4E0 \uC124\uC815 \uCD08\uAE30\uD654',\n resetDone: '\uC124\uC815\uC774 \uCD08\uAE30\uD654\uB418\uC5C8\uC2B5\uB2C8\uB2E4.',\n profiles: {\n h: '\uD504\uB85C\uD544',\n visionImpaired: '\uC2DC\uAC01 \uC7A5\uC560',\n motor: '\uC6B4\uB3D9 / \uC9C0\uCCB4',\n cognitive: '\uC778\uC9C0 / \uC77D\uAE30 \uBCF4\uC870',\n seizureSafe: '\uBC1C\uC791 \uC548\uC804',\n adhd: 'ADHD / \uC9D1\uC911',\n blind: '\uC804\uB9F9 (\uC2A4\uD06C\uB9B0 \uB9AC\uB354)',\n },\n features: {\n h: '\uAC1C\uBCC4 \uC124\uC815',\n fontSize: '\uAE00\uC790 \uD06C\uAE30',\n lineHeight: '\uD589 \uB192\uC774',\n letterSpacing: '\uC790\uAC04',\n contrast: '\uBA85\uC554 \uB300\uBE44',\n grayscale: '\uD68C\uC0C9\uC870',\n invertColors: '\uC0C9 \uBC18\uC804',\n dyslexiaFont: '\uB09C\uB3C5\uC99D \uAE00\uAF34',\n highlightLinks: '\uB9C1\uD06C \uAC15\uC870',\n pauseAnimations: '\uC560\uB2C8\uBA54\uC774\uC158 \uC815\uC9C0',\n bigCursor: '\uD070 \uCEE4\uC11C',\n focusOutline: '\uAD75\uC740 \uD3EC\uCEE4\uC2A4 \uD14C\uB450\uB9AC',\n readingMask: '\uB3C5\uC11C \uB9C8\uC2A4\uD06C',\n readingGuide: '\uB3C5\uC11C \uAC00\uC774\uB4DC',\n tts: '\uC77D\uC5B4\uC8FC\uAE30 (TTS)',\n structureNav: '\uAD6C\uC870 \uD0D0\uC0C9',\n },\n values: { off: '\uB054', on: '\uCF2C', step: '\uB2E8\uACC4' },\n contrastLabels: { off: '\uBCF4\uD1B5', high: '\uB192\uC74C', dark: '\uC5B4\uB461\uAC8C', invert: '\uBC18\uC804' },\n aria: {\n dialog: '\uC811\uADFC\uC131 \uC124\uC815',\n switch: '\uD1A0\uAE00',\n triggerLabel: '\uC811\uADFC\uC131 \uC124\uC815',\n dragHandle: '\uD328\uB110 \uC774\uB3D9',\n oversized: '\uD655\uB300\uB41C \uC704\uC82F',\n language: '\uC5B8\uC5B4',\n info: '\uC774 \uAE30\uB2A5 \uC815\uBCF4',\n },\n poweredBy: '\uC81C\uACF5',\n statementLink: '\uC811\uADFC\uC131 \uC120\uC5B8\uBB38',\n};\n", "import type { Translation } from './types.js';\n\nexport const vi: Translation = {\n title: 'Tr\u1EE3 n\u0103ng',\n close: '\u0110\u00F3ng',\n reset: '\u0110\u1EB7t l\u1EA1i t\u1EA5t c\u1EA3 c\u00E0i \u0111\u1EB7t',\n resetDone: '\u0110\u00E3 \u0111\u1EB7t l\u1EA1i c\u00E0i \u0111\u1EB7t.',\n profiles: {\n h: 'H\u1ED3 s\u01A1',\n visionImpaired: 'Khi\u1EBFm th\u1ECB',\n motor: 'V\u1EADn \u0111\u1ED9ng',\n cognitive: 'Nh\u1EADn th\u1EE9c / h\u1ED7 tr\u1EE3 \u0111\u1ECDc',\n seizureSafe: 'An to\u00E0n \u0111\u1ED9ng kinh',\n adhd: 'ADHD / t\u1EADp trung',\n blind: 'M\u00F9 (\u0111\u1ECDc m\u00E0n h\u00ECnh)',\n },\n features: {\n h: 'C\u00E0i \u0111\u1EB7t ri\u00EAng l\u1EBB',\n fontSize: 'C\u1EE1 ch\u1EEF',\n lineHeight: 'Kho\u1EA3ng c\u00E1ch d\u00F2ng',\n letterSpacing: 'Kho\u1EA3ng c\u00E1ch ch\u1EEF',\n contrast: '\u0110\u1ED9 t\u01B0\u01A1ng ph\u1EA3n',\n grayscale: 'T\u00F4ng x\u00E1m',\n invertColors: '\u0110\u1EA3o m\u00E0u',\n dyslexiaFont: 'Ph\u00F4ng ch\u1EEF ch\u1EE9ng kh\u00F3 \u0111\u1ECDc',\n highlightLinks: 'L\u00E0m n\u1ED5i li\u00EAn k\u1EBFt',\n pauseAnimations: 'T\u1EA1m d\u1EEBng ho\u1EA1t \u1EA3nh',\n bigCursor: 'Con tr\u1ECF l\u1EDBn',\n focusOutline: 'Vi\u1EC1n ti\u00EAu \u0111i\u1EC3m d\u00E0y',\n readingMask: 'M\u1EB7t n\u1EA1 \u0111\u1ECDc',\n readingGuide: 'Thanh d\u1EABn \u0111\u1ECDc',\n tts: '\u0110\u1ECDc to (TTS)',\n structureNav: '\u0110i\u1EC1u h\u01B0\u1EDBng c\u1EA5u tr\u00FAc',\n },\n values: { off: 'T\u1EAFt', on: 'B\u1EADt', step: 'm\u1EE9c' },\n contrastLabels: { off: 'Th\u01B0\u1EDDng', high: 'Cao', dark: 'T\u1ED1i', invert: '\u0110\u1EA3o' },\n aria: {\n dialog: 'C\u00E0i \u0111\u1EB7t tr\u1EE3 n\u0103ng',\n switch: 'Chuy\u1EC3n \u0111\u1ED5i',\n triggerLabel: 'C\u00E0i \u0111\u1EB7t tr\u1EE3 n\u0103ng',\n dragHandle: 'Di chuy\u1EC3n b\u1EA3ng',\n oversized: 'Ti\u1EC7n \u00EDch ph\u00F3ng to',\n language: 'Ng\u00F4n ng\u1EEF',\n info: 'Gi\u1EDBi thi\u1EC7u t\u00EDnh n\u0103ng',\n },\n poweredBy: 'Cung c\u1EA5p b\u1EDFi',\n statementLink: 'Tuy\u00EAn b\u1ED1 tr\u1EE3 n\u0103ng',\n};\n", "import type { Translation } from './types.js';\n\nexport const fa: Translation = {\n title: '\u062F\u0633\u062A\u0631\u0633\u200C\u067E\u0630\u06CC\u0631\u06CC',\n close: '\u0628\u0633\u062A\u0646',\n reset: '\u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06CC \u0647\u0645\u0647\u0654 \u062A\u0646\u0638\u06CC\u0645\u0627\u062A',\n resetDone: '\u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u0628\u0627\u0632\u0646\u0634\u0627\u0646\u06CC \u0634\u062F.',\n profiles: {\n h: '\u067E\u0631\u0648\u0641\u0627\u06CC\u0644\u200C\u0647\u0627',\n visionImpaired: '\u06A9\u0645\u200C\u0628\u06CC\u0646\u0627',\n motor: '\u062D\u0631\u06A9\u062A\u06CC',\n cognitive: '\u0634\u0646\u0627\u062E\u062A\u06CC / \u06A9\u0645\u06A9 \u062E\u0648\u0627\u0646\u062F\u0646',\n seizureSafe: '\u0627\u06CC\u0645\u0646 \u062F\u0631 \u0628\u0631\u0627\u0628\u0631 \u062A\u0634\u0646\u062C',\n adhd: 'ADHD / \u062A\u0645\u0631\u06A9\u0632',\n blind: '\u0646\u0627\u0628\u06CC\u0646\u0627 (\u0635\u0641\u062D\u0647\u200C\u062E\u0648\u0627\u0646)',\n },\n features: {\n h: '\u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u062C\u062F\u0627\u06AF\u0627\u0646\u0647',\n fontSize: '\u0627\u0646\u062F\u0627\u0632\u0647\u0654 \u0642\u0644\u0645',\n lineHeight: '\u0641\u0627\u0635\u0644\u0647\u0654 \u062E\u0637\u0648\u0637',\n letterSpacing: '\u0641\u0627\u0635\u0644\u0647\u0654 \u062D\u0631\u0648\u0641',\n contrast: '\u06A9\u0646\u062A\u0631\u0627\u0633\u062A',\n grayscale: '\u062E\u0627\u06A9\u0633\u062A\u0631\u06CC',\n invertColors: '\u0648\u0627\u0631\u0648\u0646\u0647\u200C\u0633\u0627\u0632\u06CC \u0631\u0646\u06AF',\n dyslexiaFont: '\u0642\u0644\u0645 \u0646\u0627\u0631\u0633\u0627\u062E\u0648\u0627\u0646\u06CC',\n highlightLinks: '\u0628\u0631\u062C\u0633\u062A\u0647\u200C\u0633\u0627\u0632\u06CC \u067E\u06CC\u0648\u0646\u062F\u0647\u0627',\n pauseAnimations: '\u062A\u0648\u0642\u0641 \u0627\u0646\u06CC\u0645\u06CC\u0634\u0646\u200C\u0647\u0627',\n bigCursor: '\u0646\u0634\u0627\u0646\u06AF\u0631 \u0628\u0632\u0631\u06AF',\n focusOutline: '\u0642\u0627\u0628 \u062A\u0645\u0631\u06A9\u0632 \u0636\u062E\u06CC\u0645',\n readingMask: '\u0645\u0627\u0633\u06A9 \u062E\u0648\u0627\u0646\u062F\u0646',\n readingGuide: '\u0631\u0627\u0647\u0646\u0645\u0627\u06CC \u062E\u0648\u0627\u0646\u062F\u0646',\n tts: '\u062E\u0648\u0627\u0646\u062F\u0646 \u0628\u0627 \u0635\u062F\u0627 (TTS)',\n structureNav: '\u0646\u0627\u0648\u0628\u0631\u06CC \u0633\u0627\u062E\u062A\u0627\u0631\u06CC',\n },\n values: { off: '\u062E\u0627\u0645\u0648\u0634', on: '\u0631\u0648\u0634\u0646', step: '\u0645\u0631\u062D\u0644\u0647' },\n contrastLabels: { off: '\u0639\u0627\u062F\u06CC', high: '\u0628\u0627\u0644\u0627', dark: '\u062A\u06CC\u0631\u0647', invert: '\u0648\u0627\u0631\u0648\u0646\u0647' },\n aria: {\n dialog: '\u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u062F\u0633\u062A\u0631\u0633\u200C\u067E\u0630\u06CC\u0631\u06CC',\n switch: '\u062A\u063A\u06CC\u06CC\u0631 \u0648\u0636\u0639\u06CC\u062A',\n triggerLabel: '\u062A\u0646\u0638\u06CC\u0645\u0627\u062A \u062F\u0633\u062A\u0631\u0633\u200C\u067E\u0630\u06CC\u0631\u06CC',\n dragHandle: '\u0627\u0646\u062A\u0642\u0627\u0644 \u067E\u0646\u0644',\n oversized: '\u0627\u0628\u0632\u0627\u0631\u06A9 \u0628\u0632\u0631\u06AF\u200C\u0634\u062F\u0647',\n language: '\u0632\u0628\u0627\u0646',\n info: '\u062F\u0631\u0628\u0627\u0631\u0647 \u0627\u06CC\u0646 \u0648\u06CC\u0698\u06AF\u06CC',\n },\n poweredBy: '\u0642\u062F\u0631\u062A\u200C\u06AF\u0631\u0641\u062A\u0647 \u0627\u0632',\n statementLink: '\u0628\u06CC\u0627\u0646\u06CC\u0647\u0654 \u062F\u0633\u062A\u0631\u0633\u200C\u067E\u0630\u06CC\u0631\u06CC',\n};\n", "import type { Translation } from './types.js';\n\nexport const ur: Translation = {\n title: '\u0631\u0633\u0627\u0626\u06CC',\n close: '\u0628\u0646\u062F \u06A9\u0631\u06CC\u06BA',\n reset: '\u062A\u0645\u0627\u0645 \u062A\u0631\u062A\u06CC\u0628\u0627\u062A \u0631\u06CC \u0633\u06CC\u0679 \u06A9\u0631\u06CC\u06BA',\n resetDone: '\u062A\u0631\u062A\u06CC\u0628\u0627\u062A \u0631\u06CC \u0633\u06CC\u0679 \u06C1\u0648 \u06AF\u0626\u06CC\u06BA\u06D4',\n profiles: {\n h: '\u067E\u0631\u0648\u0641\u0627\u0626\u0644\u0632',\n visionImpaired: '\u06A9\u0645\u0632\u0648\u0631 \u0628\u06CC\u0646\u0627\u0626\u06CC',\n motor: '\u062D\u0631\u06A9\u06CC',\n cognitive: '\u0630\u06C1\u0646\u06CC / \u067E\u0691\u06BE\u0646\u06D2 \u06A9\u06CC \u0645\u062F\u062F',\n seizureSafe: '\u062F\u0648\u0631\u06C1\u200C\u0645\u062D\u0641\u0648\u0638',\n adhd: 'ADHD / \u062A\u0648\u062C\u06C1',\n blind: '\u0646\u0627\u0628\u06CC\u0646\u0627 (\u0627\u0633\u06A9\u0631\u06CC\u0646 \u0631\u06CC\u0688\u0631)',\n },\n features: {\n h: '\u0627\u0646\u0641\u0631\u0627\u062F\u06CC \u062A\u0631\u062A\u06CC\u0628\u0627\u062A',\n fontSize: '\u0641\u0648\u0646\u0679 \u06A9\u0627 \u0633\u0627\u0626\u0632',\n lineHeight: '\u0633\u0637\u0631 \u06A9\u0627 \u0641\u0627\u0635\u0644\u06C1',\n letterSpacing: '\u062D\u0631\u0648\u0641 \u06A9\u0627 \u0641\u0627\u0635\u0644\u06C1',\n contrast: '\u0645\u062A\u0636\u0627\u062F\u06CC\u062A',\n grayscale: '\u062E\u0627\u06A9\u0633\u062A\u0631\u06CC',\n invertColors: '\u0631\u0646\u06AF \u0627\u064F\u0644\u0679\u06CC\u06BA',\n dyslexiaFont: '\u0688\u0633\u0644\u06CC\u06A9\u0633\u06CC\u0627 \u0641\u0648\u0646\u0679',\n highlightLinks: '\u0644\u0646\u06A9\u0633 \u0646\u0645\u0627\u06CC\u0627\u06BA \u06A9\u0631\u06CC\u06BA',\n pauseAnimations: '\u0627\u06CC\u0646\u06CC\u0645\u06CC\u0634\u0646\u0632 \u0631\u0648\u06A9\u06CC\u06BA',\n bigCursor: '\u0628\u0691\u0627 \u06A9\u0631\u0633\u0631',\n focusOutline: '\u0645\u0648\u0679\u06CC \u0641\u0648\u06A9\u0633 \u0644\u0627\u0626\u0646',\n readingMask: '\u0642\u0631\u0623\u062A \u0645\u0627\u0633\u06A9',\n readingGuide: '\u0642\u0631\u0623\u062A \u06AF\u0627\u0626\u06CC\u0688',\n tts: '\u0628\u0644\u0646\u062F \u067E\u0691\u06BE\u06CC\u06BA (TTS)',\n structureNav: '\u0633\u0627\u062E\u062A\u06CC \u062A\u0634\u0631\u06CC\u0641',\n },\n values: { off: '\u0628\u0646\u062F', on: '\u0622\u0646', step: '\u062F\u0631\u062C\u06C1' },\n contrastLabels: { off: '\u0639\u0627\u0645', high: '\u0627\u0639\u0644\u06CC\u0670', dark: '\u06AF\u06C1\u0631\u0627', invert: '\u0627\u064F\u0644\u0679\u0627' },\n aria: {\n dialog: '\u0631\u0633\u0627\u0626\u06CC \u06A9\u06CC \u062A\u0631\u062A\u06CC\u0628\u0627\u062A',\n switch: '\u0633\u0648\u0626\u0686',\n triggerLabel: '\u0631\u0633\u0627\u0626\u06CC \u06A9\u06CC \u062A\u0631\u062A\u06CC\u0628\u0627\u062A',\n dragHandle: '\u067E\u06CC\u0646\u0644 \u0645\u0646\u062A\u0642\u0644 \u06A9\u0631\u06CC\u06BA',\n oversized: '\u0628\u0691\u06CC \u0648\u06CC\u062C\u06CC\u0679',\n language: '\u0632\u0628\u0627\u0646',\n info: '\u0627\u0633 \u062E\u0635\u0648\u0635\u06CC\u062A \u06A9\u06D2 \u0628\u0627\u0631\u06D2 \u0645\u06CC\u06BA',\n },\n poweredBy: '\u067E\u0627\u0648\u0631\u0688 \u0628\u0627\u0626\u06CC',\n statementLink: '\u0631\u0633\u0627\u0626\u06CC \u0628\u06CC\u0627\u0646',\n};\n", "import type { Translation } from './types.js';\n\nexport const th: Translation = {\n title: '\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07',\n close: '\u0E1B\u0E34\u0E14',\n reset: '\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E01\u0E32\u0E23\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E17\u0E31\u0E49\u0E07\u0E2B\u0E21\u0E14',\n resetDone: '\u0E23\u0E35\u0E40\u0E0B\u0E47\u0E15\u0E01\u0E32\u0E23\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E41\u0E25\u0E49\u0E27',\n profiles: {\n h: '\u0E42\u0E1B\u0E23\u0E44\u0E1F\u0E25\u0E4C',\n visionImpaired: '\u0E2A\u0E32\u0E22\u0E15\u0E32\u0E40\u0E25\u0E37\u0E2D\u0E19\u0E23\u0E32\u0E07',\n motor: '\u0E01\u0E32\u0E23\u0E40\u0E04\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E2B\u0E27',\n cognitive: '\u0E1B\u0E31\u0E0D\u0E0D\u0E32 / \u0E0A\u0E48\u0E27\u0E22\u0E2D\u0E48\u0E32\u0E19',\n seizureSafe: '\u0E1B\u0E25\u0E2D\u0E14\u0E20\u0E31\u0E22\u0E15\u0E48\u0E2D\u0E25\u0E21\u0E0A\u0E31\u0E01',\n adhd: 'ADHD / \u0E2A\u0E21\u0E32\u0E18\u0E34',\n blind: '\u0E15\u0E32\u0E1A\u0E2D\u0E14 (\u0E42\u0E1B\u0E23\u0E41\u0E01\u0E23\u0E21\u0E2D\u0E48\u0E32\u0E19\u0E2B\u0E19\u0E49\u0E32\u0E08\u0E2D)',\n },\n features: {\n h: '\u0E01\u0E32\u0E23\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E17\u0E35\u0E25\u0E30\u0E23\u0E32\u0E22\u0E01\u0E32\u0E23',\n fontSize: '\u0E02\u0E19\u0E32\u0E14\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23',\n lineHeight: '\u0E04\u0E27\u0E32\u0E21\u0E2A\u0E39\u0E07\u0E1A\u0E23\u0E23\u0E17\u0E31\u0E14',\n letterSpacing: '\u0E23\u0E30\u0E22\u0E30\u0E2B\u0E48\u0E32\u0E07\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23',\n contrast: '\u0E04\u0E2D\u0E19\u0E17\u0E23\u0E32\u0E2A\u0E15\u0E4C',\n grayscale: '\u0E02\u0E32\u0E27\u0E14\u0E33',\n invertColors: '\u0E2A\u0E25\u0E31\u0E1A\u0E2A\u0E35',\n dyslexiaFont: '\u0E1F\u0E2D\u0E19\u0E15\u0E4C\u0E14\u0E34\u0E2A\u0E40\u0E25\u0E47\u0E01\u0E40\u0E0B\u0E35\u0E22',\n highlightLinks: '\u0E40\u0E19\u0E49\u0E19\u0E25\u0E34\u0E07\u0E01\u0E4C',\n pauseAnimations: '\u0E2B\u0E22\u0E38\u0E14\u0E20\u0E32\u0E1E\u0E40\u0E04\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E44\u0E2B\u0E27',\n bigCursor: '\u0E40\u0E04\u0E2D\u0E23\u0E4C\u0E40\u0E0B\u0E2D\u0E23\u0E4C\u0E43\u0E2B\u0E0D\u0E48',\n focusOutline: '\u0E01\u0E23\u0E2D\u0E1A\u0E42\u0E1F\u0E01\u0E31\u0E2A\u0E2B\u0E19\u0E32',\n readingMask: '\u0E2B\u0E19\u0E49\u0E32\u0E01\u0E32\u0E01\u0E2D\u0E48\u0E32\u0E19',\n readingGuide: '\u0E41\u0E16\u0E1A\u0E19\u0E33\u0E2D\u0E48\u0E32\u0E19',\n tts: '\u0E2D\u0E48\u0E32\u0E19\u0E2D\u0E2D\u0E01\u0E40\u0E2A\u0E35\u0E22\u0E07 (TTS)',\n structureNav: '\u0E19\u0E33\u0E17\u0E32\u0E07\u0E15\u0E32\u0E21\u0E42\u0E04\u0E23\u0E07\u0E2A\u0E23\u0E49\u0E32\u0E07',\n },\n values: { off: '\u0E1B\u0E34\u0E14', on: '\u0E40\u0E1B\u0E34\u0E14', step: '\u0E23\u0E30\u0E14\u0E31\u0E1A' },\n contrastLabels: { off: '\u0E1B\u0E01\u0E15\u0E34', high: '\u0E2A\u0E39\u0E07', dark: '\u0E40\u0E02\u0E49\u0E21', invert: '\u0E2A\u0E25\u0E31\u0E1A' },\n aria: {\n dialog: '\u0E01\u0E32\u0E23\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07',\n switch: '\u0E2A\u0E25\u0E31\u0E1A',\n triggerLabel: '\u0E01\u0E32\u0E23\u0E15\u0E31\u0E49\u0E07\u0E04\u0E48\u0E32\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07',\n dragHandle: '\u0E22\u0E49\u0E32\u0E22\u0E41\u0E1C\u0E07',\n oversized: '\u0E27\u0E34\u0E14\u0E40\u0E08\u0E47\u0E15\u0E02\u0E19\u0E32\u0E14\u0E43\u0E2B\u0E0D\u0E48',\n language: '\u0E20\u0E32\u0E29\u0E32',\n info: '\u0E40\u0E01\u0E35\u0E48\u0E22\u0E27\u0E01\u0E31\u0E1A\u0E1F\u0E35\u0E40\u0E08\u0E2D\u0E23\u0E4C\u0E19\u0E35\u0E49',\n },\n poweredBy: '\u0E02\u0E31\u0E1A\u0E40\u0E04\u0E25\u0E37\u0E48\u0E2D\u0E19\u0E42\u0E14\u0E22',\n statementLink: '\u0E04\u0E33\u0E1B\u0E23\u0E30\u0E01\u0E32\u0E28\u0E01\u0E32\u0E23\u0E40\u0E02\u0E49\u0E32\u0E16\u0E36\u0E07',\n};\n", "import type { Translation } from './types.js';\n\nexport const id: Translation = {\n title: 'Aksesibilitas',\n close: 'Tutup',\n reset: 'Atur ulang semua pengaturan',\n resetDone: 'Pengaturan diatur ulang.',\n profiles: {\n h: 'Profil',\n visionImpaired: 'Tunanetra sebagian',\n motor: 'Motorik',\n cognitive: 'Kognitif / bantuan baca',\n seizureSafe: 'Aman kejang',\n adhd: 'ADHD / fokus',\n blind: 'Tunanetra (pembaca layar)',\n },\n features: {\n h: 'Pengaturan individual',\n fontSize: 'Ukuran huruf',\n lineHeight: 'Tinggi baris',\n letterSpacing: 'Jarak huruf',\n contrast: 'Kontras',\n grayscale: 'Skala abu',\n invertColors: 'Balik warna',\n dyslexiaFont: 'Huruf disleksia',\n highlightLinks: 'Sorot tautan',\n pauseAnimations: 'Jeda animasi',\n bigCursor: 'Kursor besar',\n focusOutline: 'Garis fokus tebal',\n readingMask: 'Masker baca',\n readingGuide: 'Pemandu baca',\n tts: 'Baca nyaring (TTS)',\n structureNav: 'Navigasi struktur',\n },\n values: { off: 'Mati', on: 'Nyala', step: 'tingkat' },\n contrastLabels: { off: 'Normal', high: 'Tinggi', dark: 'Gelap', invert: 'Balik' },\n aria: {\n dialog: 'Pengaturan aksesibilitas',\n switch: 'Saklar',\n triggerLabel: 'Pengaturan aksesibilitas',\n dragHandle: 'Pindahkan panel',\n oversized: 'Widget diperbesar',\n language: 'Bahasa',\n info: 'Tentang fitur ini',\n },\n poweredBy: 'Didukung oleh',\n statementLink: 'Pernyataan aksesibilitas',\n};\n", "import type { Translation } from './types.js';\n\nexport const he: Translation = {\n title: '\u05E0\u05D2\u05D9\u05E9\u05D5\u05EA',\n close: '\u05E1\u05D2\u05D5\u05E8',\n reset: '\u05D0\u05E4\u05E1 \u05D0\u05EA \u05DB\u05DC \u05D4\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA',\n resetDone: '\u05D4\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA \u05D0\u05D5\u05E4\u05E1\u05D5.',\n profiles: {\n h: '\u05E4\u05E8\u05D5\u05E4\u05D9\u05DC\u05D9\u05DD',\n visionImpaired: '\u05DC\u05E7\u05D5\u05EA \u05E8\u05D0\u05D9\u05D9\u05D4',\n motor: '\u05DE\u05D5\u05D8\u05D5\u05E8\u05D9',\n cognitive: '\u05E7\u05D5\u05D2\u05E0\u05D9\u05D8\u05D9\u05D1\u05D9 / \u05E2\u05D6\u05E8 \u05E7\u05E8\u05D9\u05D0\u05D4',\n seizureSafe: '\u05D1\u05D8\u05D5\u05D7 \u05DE\u05E4\u05E0\u05D9 \u05D4\u05EA\u05E7\u05E4\u05D9\u05DD',\n adhd: 'ADHD / \u05E8\u05D9\u05DB\u05D5\u05D6',\n blind: '\u05E2\u05D9\u05D5\u05D5\u05E8 (\u05E7\u05D5\u05E8\u05D0 \u05DE\u05E1\u05DA)',\n },\n features: {\n h: '\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA \u05D1\u05D5\u05D3\u05D3\u05D5\u05EA',\n fontSize: '\u05D2\u05D5\u05D3\u05DC \u05D2\u05D5\u05E4\u05DF',\n lineHeight: '\u05D2\u05D5\u05D1\u05D4 \u05E9\u05D5\u05E8\u05D4',\n letterSpacing: '\u05DE\u05E8\u05D5\u05D5\u05D7 \u05D0\u05D5\u05EA\u05D9\u05D5\u05EA',\n contrast: '\u05E0\u05D9\u05D2\u05D5\u05D3\u05D9\u05D5\u05EA',\n grayscale: '\u05D2\u05D5\u05D5\u05E0\u05D9 \u05D0\u05E4\u05D5\u05E8',\n invertColors: '\u05D4\u05E4\u05D5\u05DA \u05E6\u05D1\u05E2\u05D9\u05DD',\n dyslexiaFont: '\u05D2\u05D5\u05E4\u05DF \u05D3\u05D9\u05E1\u05DC\u05E7\u05E6\u05D9\u05D4',\n highlightLinks: '\u05D4\u05D3\u05D2\u05E9 \u05E7\u05D9\u05E9\u05D5\u05E8\u05D9\u05DD',\n pauseAnimations: '\u05D4\u05E9\u05D4\u05D4 \u05D0\u05E0\u05D9\u05DE\u05E6\u05D9\u05D5\u05EA',\n bigCursor: '\u05E1\u05DE\u05DF \u05D2\u05D3\u05D5\u05DC',\n focusOutline: '\u05DE\u05E1\u05D2\u05E8\u05EA \u05DE\u05D9\u05E7\u05D5\u05D3 \u05E2\u05D1\u05D4',\n readingMask: '\u05DE\u05E1\u05DB\u05EA \u05E7\u05E8\u05D9\u05D0\u05D4',\n readingGuide: '\u05DE\u05D3\u05E8\u05D9\u05DA \u05E7\u05E8\u05D9\u05D0\u05D4',\n tts: '\u05D4\u05E7\u05E8\u05D0\u05D4 (TTS)',\n structureNav: '\u05E0\u05D9\u05D5\u05D5\u05D8 \u05DE\u05D1\u05E0\u05D9',\n },\n values: { off: '\u05DB\u05D1\u05D5\u05D9', on: '\u05D3\u05DC\u05D5\u05E7', step: '\u05E8\u05DE\u05D4' },\n contrastLabels: { off: '\u05E8\u05D2\u05D9\u05DC', high: '\u05D2\u05D1\u05D5\u05D4', dark: '\u05DB\u05D4\u05D4', invert: '\u05D4\u05E4\u05D5\u05DA' },\n aria: {\n dialog: '\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA \u05E0\u05D2\u05D9\u05E9\u05D5\u05EA',\n switch: '\u05DE\u05EA\u05D2',\n triggerLabel: '\u05D4\u05D2\u05D3\u05E8\u05D5\u05EA \u05E0\u05D2\u05D9\u05E9\u05D5\u05EA',\n dragHandle: '\u05D4\u05D6\u05D6\u05EA \u05D4\u05E4\u05D0\u05E0\u05DC',\n oversized: '\u05D5\u05D5\u05D9\u05D3\u05D2\u05F3\u05D8 \u05DE\u05D5\u05D2\u05D3\u05DC',\n language: '\u05E9\u05E4\u05D4',\n info: '\u05E2\u05DC \u05EA\u05DB\u05D5\u05E0\u05D4 \u05D6\u05D5',\n },\n poweredBy: '\u05DE\u05D5\u05E4\u05E2\u05DC \u05E2\u05DC \u05D9\u05D3\u05D9',\n statementLink: '\u05D4\u05E6\u05D4\u05E8\u05EA \u05E0\u05D2\u05D9\u05E9\u05D5\u05EA',\n};\n", "import type { Translation } from './types.js';\n\nexport const nl: Translation = {\n title: 'Toegankelijkheid',\n close: 'Sluiten',\n reset: 'Alle instellingen resetten',\n resetDone: 'Instellingen gereset.',\n profiles: {\n h: 'Profielen',\n visionImpaired: 'Slechtziend',\n motor: 'Motoriek',\n cognitive: 'Cognitief / leeshulp',\n seizureSafe: 'Epilepsie-veilig',\n adhd: 'ADHD / focus',\n blind: 'Blind (schermlezer)',\n },\n features: {\n h: 'Individuele instellingen',\n fontSize: 'Lettergrootte',\n lineHeight: 'Regelafstand',\n letterSpacing: 'Letterafstand',\n contrast: 'Contrast',\n grayscale: 'Grijstinten',\n invertColors: 'Kleuren omkeren',\n dyslexiaFont: 'Dyslexie-lettertype',\n highlightLinks: 'Koppelingen markeren',\n pauseAnimations: 'Animaties pauzeren',\n bigCursor: 'Grote cursor',\n focusOutline: 'Dikke focusrand',\n readingMask: 'Leesmasker',\n readingGuide: 'Leeslineaal',\n tts: 'Voorlezen (TTS)',\n structureNav: 'Structuurnavigatie',\n },\n values: { off: 'Uit', on: 'Aan', step: 'stap' },\n contrastLabels: { off: 'Normaal', high: 'Hoog', dark: 'Donker', invert: 'Omgekeerd' },\n aria: {\n dialog: 'Toegankelijkheidsinstellingen',\n switch: 'Schakelaar',\n triggerLabel: 'Toegankelijkheidsinstellingen',\n dragHandle: 'Paneel verplaatsen',\n oversized: 'Vergrote widget',\n language: 'Taal',\n info: 'Over deze functie',\n },\n poweredBy: 'Aangedreven door',\n statementLink: 'Toegankelijkheidsverklaring',\n};\n", "import type { Translation } from './types.js';\n\nexport const sv: Translation = {\n title: 'Tillg\u00E4nglighet',\n close: 'St\u00E4ng',\n reset: '\u00C5terst\u00E4ll alla inst\u00E4llningar',\n resetDone: 'Inst\u00E4llningar \u00E5terst\u00E4llda.',\n profiles: {\n h: 'Profiler',\n visionImpaired: 'Synskadad',\n motor: 'Motorik',\n cognitive: 'Kognitiv / l\u00E4shj\u00E4lp',\n seizureSafe: 'Epilepsis\u00E4ker',\n adhd: 'ADHD / fokus',\n blind: 'Blind (sk\u00E4rml\u00E4sare)',\n },\n features: {\n h: 'Enskilda inst\u00E4llningar',\n fontSize: 'Teckenstorlek',\n lineHeight: 'Radavst\u00E5nd',\n letterSpacing: 'Bokstavsavst\u00E5nd',\n contrast: 'Kontrast',\n grayscale: 'Gr\u00E5skala',\n invertColors: 'Invertera f\u00E4rger',\n dyslexiaFont: 'Dyslexi-typsnitt',\n highlightLinks: 'Markera l\u00E4nkar',\n pauseAnimations: 'Pausa animationer',\n bigCursor: 'Stor pekare',\n focusOutline: 'Tjock fokusram',\n readingMask: 'L\u00E4smask',\n readingGuide: 'L\u00E4sguide',\n tts: 'L\u00E4s upp (TTS)',\n structureNav: 'Strukturnavigering',\n },\n values: { off: 'Av', on: 'P\u00E5', step: 'niv\u00E5' },\n contrastLabels: { off: 'Normal', high: 'H\u00F6g', dark: 'M\u00F6rk', invert: 'Inverterad' },\n aria: {\n dialog: 'Tillg\u00E4nglighetsinst\u00E4llningar',\n switch: 'V\u00E4xla',\n triggerLabel: 'Tillg\u00E4nglighetsinst\u00E4llningar',\n dragHandle: 'Flytta panelen',\n oversized: 'F\u00F6rstorad widget',\n language: 'Spr\u00E5k',\n info: 'Om denna funktion',\n },\n poweredBy: 'Driven av',\n statementLink: 'Tillg\u00E4nglighetsredog\u00F6relse',\n};\n", "import type { Translation } from './types.js';\n\nexport const cs: Translation = {\n title: 'P\u0159\u00EDstupnost',\n close: 'Zav\u0159\u00EDt',\n reset: 'Obnovit v\u0161echna nastaven\u00ED',\n resetDone: 'Nastaven\u00ED obnovena.',\n profiles: {\n h: 'Profily',\n visionImpaired: 'Zrakov\u011B posti\u017Een\u00ED',\n motor: 'Motorika',\n cognitive: 'Kognitivn\u00ED / pomoc p\u0159i \u010Dten\u00ED',\n seizureSafe: 'Bezpe\u010Dn\u00E9 p\u0159i epilepsii',\n adhd: 'ADHD / soust\u0159ed\u011Bn\u00ED',\n blind: 'Nevidom\u00ED (\u010Dte\u010Dka obrazovky)',\n },\n features: {\n h: 'Jednotliv\u00E1 nastaven\u00ED',\n fontSize: 'Velikost p\u00EDsma',\n lineHeight: '\u0158\u00E1dkov\u00E1n\u00ED',\n letterSpacing: 'Mezery mezi p\u00EDsmeny',\n contrast: 'Kontrast',\n grayscale: 'Stupn\u011B \u0161edi',\n invertColors: 'Invertovat barvy',\n dyslexiaFont: 'P\u00EDsmo pro dyslexii',\n highlightLinks: 'Zv\u00FDraznit odkazy',\n pauseAnimations: 'Pozastavit animace',\n bigCursor: 'Velk\u00FD kurzor',\n focusOutline: 'Tlust\u00FD r\u00E1me\u010Dek zam\u011B\u0159en\u00ED',\n readingMask: 'Maska \u010Dten\u00ED',\n readingGuide: 'Vod\u00EDtko \u010Dten\u00ED',\n tts: 'P\u0159ed\u010D\u00EDt\u00E1n\u00ED (TTS)',\n structureNav: 'Navigace podle struktury',\n },\n values: { off: 'Vyp.', on: 'Zap.', step: '\u00FArove\u0148' },\n contrastLabels: { off: 'Norm\u00E1ln\u00ED', high: 'Vysok\u00FD', dark: 'Tmav\u00FD', invert: 'Invertovan\u00FD' },\n aria: {\n dialog: 'Nastaven\u00ED p\u0159\u00EDstupnosti',\n switch: 'P\u0159ep\u00EDna\u010D',\n triggerLabel: 'Nastaven\u00ED p\u0159\u00EDstupnosti',\n dragHandle: 'P\u0159esunout panel',\n oversized: 'Zv\u011Bt\u0161en\u00FD widget',\n language: 'Jazyk',\n info: 'O t\u00E9to funkci',\n },\n poweredBy: 'Poh\u00E1n\u011Bno',\n statementLink: 'Prohl\u00E1\u0161en\u00ED o p\u0159\u00EDstupnosti',\n};\n", "import type { Translation } from './types.js';\n\nexport const el: Translation = {\n title: '\u03A0\u03C1\u03BF\u03C3\u03B2\u03B1\u03C3\u03B9\u03BC\u03CC\u03C4\u03B7\u03C4\u03B1',\n close: '\u039A\u03BB\u03B5\u03AF\u03C3\u03B9\u03BC\u03BF',\n reset: '\u0395\u03C0\u03B1\u03BD\u03B1\u03C6\u03BF\u03C1\u03AC \u03CC\u03BB\u03C9\u03BD \u03C4\u03C9\u03BD \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03C9\u03BD',\n resetDone: '\u039F\u03B9 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03B5\u03C0\u03B1\u03BD\u03B1\u03C6\u03AD\u03C1\u03B8\u03B7\u03BA\u03B1\u03BD.',\n profiles: {\n h: '\u03A0\u03C1\u03BF\u03C6\u03AF\u03BB',\n visionImpaired: '\u03A0\u03C1\u03BF\u03B2\u03BB\u03AE\u03BC\u03B1\u03C4\u03B1 \u03CC\u03C1\u03B1\u03C3\u03B7\u03C2',\n motor: '\u039A\u03B9\u03BD\u03B7\u03C4\u03B9\u03BA\u03AC',\n cognitive: '\u0393\u03BD\u03C9\u03C3\u03C4\u03B9\u03BA\u03AC / \u03B2\u03BF\u03AE\u03B8\u03B5\u03B9\u03B1 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03B7\u03C2',\n seizureSafe: '\u0391\u03C3\u03C6\u03B1\u03BB\u03AD\u03C2 \u03B3\u03B9\u03B1 \u03B5\u03C0\u03B9\u03BB\u03B7\u03C8\u03AF\u03B1',\n adhd: '\u0394\u0395\u03A0\u03A5 / \u03B5\u03C3\u03C4\u03AF\u03B1\u03C3\u03B7',\n blind: '\u03A4\u03C5\u03C6\u03BB\u03BF\u03AF (\u03B1\u03BD\u03B1\u03B3\u03BD\u03CE\u03C3\u03C4\u03B7\u03C2 \u03BF\u03B8\u03CC\u03BD\u03B7\u03C2)',\n },\n features: {\n h: '\u0395\u03C0\u03B9\u03BC\u03AD\u03C1\u03BF\u03C5\u03C2 \u03C1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2',\n fontSize: '\u039C\u03AD\u03B3\u03B5\u03B8\u03BF\u03C2 \u03B3\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC\u03C2',\n lineHeight: '\u0391\u03C0\u03CC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03B3\u03C1\u03B1\u03BC\u03BC\u03CE\u03BD',\n letterSpacing: '\u0391\u03C0\u03CC\u03C3\u03C4\u03B1\u03C3\u03B7 \u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03C9\u03BD',\n contrast: '\u0391\u03BD\u03C4\u03AF\u03B8\u03B5\u03C3\u03B7',\n grayscale: '\u0391\u03C0\u03BF\u03C7\u03C1\u03CE\u03C3\u03B5\u03B9\u03C2 \u03C4\u03BF\u03C5 \u03B3\u03BA\u03C1\u03B9',\n invertColors: '\u0391\u03BD\u03C4\u03B9\u03C3\u03C4\u03C1\u03BF\u03C6\u03AE \u03C7\u03C1\u03C9\u03BC\u03AC\u03C4\u03C9\u03BD',\n dyslexiaFont: '\u0393\u03C1\u03B1\u03BC\u03BC\u03B1\u03C4\u03BF\u03C3\u03B5\u03B9\u03C1\u03AC \u03B4\u03C5\u03C3\u03BB\u03B5\u03BE\u03AF\u03B1\u03C2',\n highlightLinks: '\u0395\u03C0\u03B9\u03C3\u03AE\u03BC\u03B1\u03BD\u03C3\u03B7 \u03C3\u03C5\u03BD\u03B4\u03AD\u03C3\u03BC\u03C9\u03BD',\n pauseAnimations: '\u03A0\u03B1\u03CD\u03C3\u03B7 \u03BA\u03B9\u03BD\u03BF\u03CD\u03BC\u03B5\u03BD\u03C9\u03BD \u03B5\u03B9\u03BA\u03CC\u03BD\u03C9\u03BD',\n bigCursor: '\u039C\u03B5\u03B3\u03AC\u03BB\u03BF\u03C2 \u03B4\u03C1\u03BF\u03BC\u03AD\u03B1\u03C2',\n focusOutline: '\u03A0\u03B1\u03C7\u03CD \u03C0\u03BB\u03B1\u03AF\u03C3\u03B9\u03BF \u03B5\u03C3\u03C4\u03AF\u03B1\u03C3\u03B7\u03C2',\n readingMask: '\u039C\u03AC\u03C3\u03BA\u03B1 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03B7\u03C2',\n readingGuide: '\u039F\u03B4\u03B7\u03B3\u03CC\u03C2 \u03B1\u03BD\u03AC\u03B3\u03BD\u03C9\u03C3\u03B7\u03C2',\n tts: '\u0395\u03BA\u03C6\u03CE\u03BD\u03B7\u03C3\u03B7 (TTS)',\n structureNav: '\u03A0\u03BB\u03BF\u03AE\u03B3\u03B7\u03C3\u03B7 \u03B4\u03BF\u03BC\u03AE\u03C2',\n },\n values: { off: '\u0391\u03BD\u03B5\u03BD.', on: '\u0395\u03BD\u03B5\u03C1\u03B3.', step: '\u03B2\u03AE\u03BC\u03B1' },\n contrastLabels: { off: '\u039A\u03B1\u03BD\u03BF\u03BD\u03B9\u03BA\u03AE', high: '\u03A5\u03C8\u03B7\u03BB\u03AE', dark: '\u03A3\u03BA\u03BF\u03C4\u03B5\u03B9\u03BD\u03AE', invert: '\u0391\u03BD\u03B5\u03C3\u03C4\u03C1\u03B1\u03BC\u03BC\u03AD\u03BD\u03B7' },\n aria: {\n dialog: '\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B2\u03B1\u03C3\u03B9\u03BC\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2',\n switch: '\u0395\u03BD\u03B1\u03BB\u03BB\u03B1\u03B3\u03AE',\n triggerLabel: '\u03A1\u03C5\u03B8\u03BC\u03AF\u03C3\u03B5\u03B9\u03C2 \u03C0\u03C1\u03BF\u03C3\u03B2\u03B1\u03C3\u03B9\u03BC\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2',\n dragHandle: '\u039C\u03B5\u03C4\u03B1\u03BA\u03AF\u03BD\u03B7\u03C3\u03B7 \u03C0\u03AC\u03BD\u03B5\u03BB',\n oversized: '\u039C\u03B5\u03B3\u03B5\u03B8\u03C5\u03BC\u03AD\u03BD\u03BF widget',\n language: '\u0393\u03BB\u03CE\u03C3\u03C3\u03B1',\n info: '\u03A3\u03C7\u03B5\u03C4\u03B9\u03BA\u03AC \u03BC\u03B5 \u03C4\u03B7 \u03BB\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1',\n },\n poweredBy: '\u03A5\u03C0\u03BF\u03C3\u03C4\u03B7\u03C1\u03AF\u03B6\u03B5\u03C4\u03B1\u03B9 \u03B1\u03C0\u03CC',\n statementLink: '\u0394\u03AE\u03BB\u03C9\u03C3\u03B7 \u03C0\u03C1\u03BF\u03C3\u03B2\u03B1\u03C3\u03B9\u03BC\u03CC\u03C4\u03B7\u03C4\u03B1\u03C2',\n};\n", "import type { Translation } from './types.js';\n\nexport const hu: Translation = {\n title: 'Akad\u00E1lymentess\u00E9g',\n close: 'Bez\u00E1r\u00E1s',\n reset: 'Minden be\u00E1ll\u00EDt\u00E1s vissza\u00E1ll\u00EDt\u00E1sa',\n resetDone: 'A be\u00E1ll\u00EDt\u00E1sok vissza\u00E1ll\u00EDtva.',\n profiles: {\n h: 'Profilok',\n visionImpaired: 'L\u00E1t\u00E1ss\u00E9r\u00FClt',\n motor: 'Mozg\u00E1sszervi',\n cognitive: 'Kognit\u00EDv / olvas\u00E1si seg\u00EDts\u00E9g',\n seizureSafe: 'Rohambiztos',\n adhd: 'ADHD / \u00F6sszpontos\u00EDt\u00E1s',\n blind: 'Vak (k\u00E9perny\u0151olvas\u00F3)',\n },\n features: {\n h: 'Egyedi be\u00E1ll\u00EDt\u00E1sok',\n fontSize: 'Bet\u0171m\u00E9ret',\n lineHeight: 'Sormagass\u00E1g',\n letterSpacing: 'Bet\u0171k\u00F6z',\n contrast: 'Kontraszt',\n grayscale: 'Sz\u00FCrke\u00E1rnyalat',\n invertColors: 'Sz\u00EDnek invert\u00E1l\u00E1sa',\n dyslexiaFont: 'Diszlexia bet\u0171t\u00EDpus',\n highlightLinks: 'Hivatkoz\u00E1sok kiemel\u00E9se',\n pauseAnimations: 'Anim\u00E1ci\u00F3k sz\u00FCneteltet\u00E9se',\n bigCursor: 'Nagy kurzor',\n focusOutline: 'Vastag f\u00F3kuszkeret',\n readingMask: 'Olvas\u00F3maszk',\n readingGuide: 'Olvas\u00E1si seg\u00E9d',\n tts: 'Felolvas\u00E1s (TTS)',\n structureNav: 'Strukt\u00FAra-navig\u00E1ci\u00F3',\n },\n values: { off: 'Ki', on: 'Be', step: 'szint' },\n contrastLabels: { off: 'Norm\u00E1l', high: 'Magas', dark: 'S\u00F6t\u00E9t', invert: 'Invert\u00E1lt' },\n aria: {\n dialog: 'Akad\u00E1lymentess\u00E9gi be\u00E1ll\u00EDt\u00E1sok',\n switch: 'Kapcsol\u00F3',\n triggerLabel: 'Akad\u00E1lymentess\u00E9gi be\u00E1ll\u00EDt\u00E1sok',\n dragHandle: 'Panel \u00E1thelyez\u00E9se',\n oversized: 'Kinagy\u00EDtott widget',\n language: 'Nyelv',\n info: 'Err\u0151l a funkci\u00F3r\u00F3l',\n },\n poweredBy: 'M\u0171k\u00F6dteti',\n statementLink: 'Akad\u00E1lymentess\u00E9gi nyilatkozat',\n};\n", "import type { Translation } from './types.js';\n\nexport const ro: Translation = {\n title: 'Accesibilitate',\n close: '\u00CEnchide',\n reset: 'Reseteaz\u0103 toate set\u0103rile',\n resetDone: 'Set\u0103ri resetate.',\n profiles: {\n h: 'Profiluri',\n visionImpaired: 'Deficien\u021B\u0103 de vedere',\n motor: 'Motorie',\n cognitive: 'Cognitiv / ajutor de citire',\n seizureSafe: 'Sigur pentru epilepsie',\n adhd: 'ADHD / concentrare',\n blind: 'Nev\u0103z\u0103tor (cititor de ecran)',\n },\n features: {\n h: 'Set\u0103ri individuale',\n fontSize: 'Dimensiune font',\n lineHeight: '\u00CEn\u0103l\u021Bime r\u00E2nd',\n letterSpacing: 'Spa\u021Biere caractere',\n contrast: 'Contrast',\n grayscale: 'Tonuri de gri',\n invertColors: 'Inverseaz\u0103 culorile',\n dyslexiaFont: 'Font pentru dislexie',\n highlightLinks: 'Eviden\u021Biaz\u0103 linkurile',\n pauseAnimations: 'Opre\u0219te anima\u021Biile',\n bigCursor: 'Cursor mare',\n focusOutline: 'Contur de focalizare gros',\n readingMask: 'Masc\u0103 de citire',\n readingGuide: 'Ghid de citire',\n tts: 'Cite\u0219te cu voce (TTS)',\n structureNav: 'Navigare pe structur\u0103',\n },\n values: { off: 'Oprit', on: 'Pornit', step: 'nivel' },\n contrastLabels: { off: 'Normal', high: 'Ridicat', dark: '\u00CEntunecat', invert: 'Inversat' },\n aria: {\n dialog: 'Set\u0103ri de accesibilitate',\n switch: 'Comutator',\n triggerLabel: 'Set\u0103ri de accesibilitate',\n dragHandle: 'Muta\u021Bi panoul',\n oversized: 'Widget m\u0103rit',\n language: 'Limb\u0103',\n info: 'Despre aceast\u0103 func\u021Bie',\n },\n poweredBy: 'Oferit de',\n statementLink: 'Declara\u021Bie de accesibilitate',\n};\n", "import type { Translation } from './types.js';\n\nexport const uk: Translation = {\n title: '\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u0456\u0441\u0442\u044C',\n close: '\u0417\u0430\u043A\u0440\u0438\u0442\u0438',\n reset: '\u0421\u043A\u0438\u043D\u0443\u0442\u0438 \u0432\u0441\u0456 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F',\n resetDone: '\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0441\u043A\u0438\u043D\u0443\u0442\u043E.',\n profiles: {\n h: '\u041F\u0440\u043E\u0444\u0456\u043B\u0456',\n visionImpaired: '\u0421\u043B\u0430\u0431\u043E\u0437\u043E\u0440\u0456',\n motor: '\u041C\u043E\u0442\u043E\u0440\u0438\u043A\u0430',\n cognitive: '\u041A\u043E\u0433\u043D\u0456\u0442\u0438\u0432\u043D\u0456 / \u0434\u043E\u043F\u043E\u043C\u043E\u0433\u0430 \u0447\u0438\u0442\u0430\u043D\u043D\u044E',\n seizureSafe: '\u0411\u0435\u0437\u043F\u0435\u0447\u043D\u043E \u0432\u0456\u0434 \u043D\u0430\u043F\u0430\u0434\u0456\u0432',\n adhd: '\u0421\u0414\u0423\u0413 / \u0444\u043E\u043A\u0443\u0441',\n blind: '\u041D\u0435\u0437\u0440\u044F\u0447\u0456 (\u0437\u0447\u0438\u0442\u0443\u0432\u0430\u0447 \u0435\u043A\u0440\u0430\u043D\u0430)',\n },\n features: {\n h: '\u041E\u043A\u0440\u0435\u043C\u0456 \u043D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F',\n fontSize: '\u0420\u043E\u0437\u043C\u0456\u0440 \u0448\u0440\u0438\u0444\u0442\u0443',\n lineHeight: '\u041C\u0456\u0436\u0440\u044F\u0434\u043A\u043E\u0432\u0438\u0439 \u0456\u043D\u0442\u0435\u0440\u0432\u0430\u043B',\n letterSpacing: '\u041C\u0456\u0436\u0431\u0443\u043A\u0432\u0435\u043D\u0438\u0439 \u0456\u043D\u0442\u0435\u0440\u0432\u0430\u043B',\n contrast: '\u041A\u043E\u043D\u0442\u0440\u0430\u0441\u0442\u043D\u0456\u0441\u0442\u044C',\n grayscale: '\u0412\u0456\u0434\u0442\u0456\u043D\u043A\u0438 \u0441\u0456\u0440\u043E\u0433\u043E',\n invertColors: '\u0406\u043D\u0432\u0435\u0440\u0442\u0443\u0432\u0430\u0442\u0438 \u043A\u043E\u043B\u044C\u043E\u0440\u0438',\n dyslexiaFont: '\u0428\u0440\u0438\u0444\u0442 \u0434\u043B\u044F \u0434\u0438\u0441\u043B\u0435\u043A\u0441\u0456\u0457',\n highlightLinks: '\u0412\u0438\u0434\u0456\u043B\u0438\u0442\u0438 \u043F\u043E\u0441\u0438\u043B\u0430\u043D\u043D\u044F',\n pauseAnimations: '\u0417\u0443\u043F\u0438\u043D\u0438\u0442\u0438 \u0430\u043D\u0456\u043C\u0430\u0446\u0456\u0457',\n bigCursor: '\u0412\u0435\u043B\u0438\u043A\u0438\u0439 \u043A\u0443\u0440\u0441\u043E\u0440',\n focusOutline: '\u0422\u043E\u0432\u0441\u0442\u0430 \u0440\u0430\u043C\u043A\u0430 \u0444\u043E\u043A\u0443\u0441\u0443',\n readingMask: '\u041C\u0430\u0441\u043A\u0430 \u0447\u0438\u0442\u0430\u043D\u043D\u044F',\n readingGuide: '\u041D\u0430\u043F\u0440\u044F\u043C\u043D\u0430 \u0447\u0438\u0442\u0430\u043D\u043D\u044F',\n tts: '\u041E\u0437\u0432\u0443\u0447\u0435\u043D\u043D\u044F (TTS)',\n structureNav: '\u041D\u0430\u0432\u0456\u0433\u0430\u0446\u0456\u044F \u0437\u0430 \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u043E\u044E',\n },\n values: { off: '\u0412\u0438\u043C\u043A.', on: '\u0423\u0432\u0456\u043C\u043A.', step: '\u0440\u0456\u0432\u0435\u043D\u044C' },\n contrastLabels: { off: '\u0417\u0432\u0438\u0447\u0430\u0439\u043D\u0438\u0439', high: '\u0412\u0438\u0441\u043E\u043A\u0438\u0439', dark: '\u0422\u0435\u043C\u043D\u0438\u0439', invert: '\u0406\u043D\u0432\u0435\u0440\u0442\u043E\u0432\u0430\u043D\u0438\u0439' },\n aria: {\n dialog: '\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u0456',\n switch: '\u041F\u0435\u0440\u0435\u043C\u0438\u043A\u0430\u0447',\n triggerLabel: '\u041D\u0430\u043B\u0430\u0448\u0442\u0443\u0432\u0430\u043D\u043D\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u0456',\n dragHandle: '\u041F\u0435\u0440\u0435\u043C\u0456\u0441\u0442\u0438\u0442\u0438 \u043F\u0430\u043D\u0435\u043B\u044C',\n oversized: '\u0417\u0431\u0456\u043B\u044C\u0448\u0435\u043D\u0438\u0439 \u0432\u0456\u0434\u0436\u0435\u0442',\n language: '\u041C\u043E\u0432\u0430',\n info: '\u041F\u0440\u043E \u0446\u044E \u0444\u0443\u043D\u043A\u0446\u0456\u044E',\n },\n poweredBy: '\u041F\u0440\u0430\u0446\u044E\u0454 \u043D\u0430',\n statementLink: '\u0414\u0435\u043A\u043B\u0430\u0440\u0430\u0446\u0456\u044F \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u0456',\n};\n", "import type { Locale } from '../types/index.js';\nimport type { Translation } from './types.js';\n\n// Original 8\nimport { de } from './de.js';\nimport { en } from './en.js';\nimport { fr } from './fr.js';\nimport { es } from './es.js';\nimport { it } from './it.js';\nimport { pl } from './pl.js';\nimport { tr } from './tr.js';\nimport { ar } from './ar.js';\n// Added (all \u2265 8M speakers)\nimport { zh } from './zh.js';\nimport { hi } from './hi.js';\nimport { pt } from './pt.js';\nimport { bn } from './bn.js';\nimport { ru } from './ru.js';\nimport { ja } from './ja.js';\nimport { ko } from './ko.js';\nimport { vi } from './vi.js';\nimport { fa } from './fa.js';\nimport { ur } from './ur.js';\nimport { th } from './th.js';\nimport { id } from './id.js';\nimport { he } from './he.js';\nimport { nl } from './nl.js';\nimport { sv } from './sv.js';\nimport { cs } from './cs.js';\nimport { el } from './el.js';\nimport { hu } from './hu.js';\nimport { ro } from './ro.js';\nimport { uk } from './uk.js';\n\nexport const translations: Record<Locale, Translation> = {\n de,\n en,\n fr,\n es,\n it,\n pl,\n tr,\n ar,\n zh,\n hi,\n pt,\n bn,\n ru,\n ja,\n ko,\n vi,\n fa,\n ur,\n th,\n id,\n he,\n nl,\n sv,\n cs,\n el,\n hu,\n ro,\n uk,\n};\n\nexport function t(locale: Locale): Translation {\n return translations[locale] ?? translations.en;\n}\n\nexport type { Translation };\n", "import type { Locale } from '../types/index.js';\n\nconst LOCALE_TO_BCP47: Record<Locale, string> = {\n de: 'de-DE',\n en: 'en-US',\n fr: 'fr-FR',\n es: 'es-ES',\n it: 'it-IT',\n pl: 'pl-PL',\n tr: 'tr-TR',\n ar: 'ar-SA',\n zh: 'zh-CN',\n hi: 'hi-IN',\n pt: 'pt-PT',\n bn: 'bn-BD',\n ru: 'ru-RU',\n ja: 'ja-JP',\n ko: 'ko-KR',\n vi: 'vi-VN',\n fa: 'fa-IR',\n ur: 'ur-PK',\n th: 'th-TH',\n id: 'id-ID',\n he: 'he-IL',\n nl: 'nl-NL',\n sv: 'sv-SE',\n cs: 'cs-CZ',\n el: 'el-GR',\n hu: 'hu-HU',\n ro: 'ro-RO',\n uk: 'uk-UA',\n};\n\nlet active = false;\nlet utter: SpeechSynthesisUtterance | null = null;\n\nexport function ttsSupported(): boolean {\n return typeof window !== 'undefined' && 'speechSynthesis' in window;\n}\n\nexport function ttsActive(): boolean {\n return active;\n}\n\nexport function ttsStart(text: string, locale: Locale, rate = 1.0): boolean {\n if (!ttsSupported() || !text.trim()) return false;\n ttsStop();\n utter = new SpeechSynthesisUtterance(text);\n utter.lang = LOCALE_TO_BCP47[locale];\n utter.rate = rate;\n utter.onend = () => {\n active = false;\n };\n utter.onerror = () => {\n active = false;\n };\n active = true;\n window.speechSynthesis.speak(utter);\n return true;\n}\n\nexport function ttsStop(): void {\n if (ttsSupported()) window.speechSynthesis.cancel();\n active = false;\n utter = null;\n}\n\nexport function collectReadableText(root: Element = document.body, limit = 4000): string {\n const excluded = 'script,style,noscript,[aria-hidden=\"true\"],[data-aw-panel],[data-aw-fab]';\n const clone = root.cloneNode(true) as Element;\n clone.querySelectorAll(excluded).forEach((n) => n.remove());\n return (clone.textContent ?? '').replace(/\\s+/g, ' ').trim().slice(0, limit);\n}\n", "const NAV_ID = 'aw-struct-nav';\n\nexport function structureNavToggle(label: string): boolean {\n const existing = document.getElementById(NAV_ID);\n if (existing) {\n existing.remove();\n return false;\n }\n\n const nav = document.createElement('nav');\n nav.id = NAV_ID;\n nav.setAttribute('aria-label', label);\n\n const closeBtn = document.createElement('button');\n closeBtn.type = 'button';\n closeBtn.className = 'aw-struct-nav__close';\n closeBtn.textContent = '\u00D7';\n closeBtn.setAttribute('aria-label', label);\n closeBtn.addEventListener('click', () => nav.remove());\n\n const ul = document.createElement('ul');\n document.querySelectorAll<HTMLHeadingElement>('h1, h2, h3').forEach((h, i) => {\n if (!h.id) h.id = `aw-h-${i}`;\n const level = Number(h.tagName.substring(1));\n const li = document.createElement('li');\n li.dataset.level = String(level);\n const a = document.createElement('a');\n a.href = `#${h.id}`;\n a.textContent = (h.textContent ?? '').trim().slice(0, 80);\n a.addEventListener('click', () => {\n setTimeout(() => nav.remove(), 150);\n });\n li.appendChild(a);\n ul.appendChild(li);\n });\n\n nav.appendChild(closeBtn);\n nav.appendChild(ul);\n document.body.appendChild(nav);\n\n setTimeout(() => ul.querySelector<HTMLAnchorElement>('a')?.focus(), 10);\n return true;\n}\n", "import {\n CONTRAST_MODES,\n FEATURE_IDS,\n PROFILE_IDS,\n SUPPORTED_LOCALES,\n isLocale,\n isRtl,\n type FeatureId,\n type Locale,\n type WidgetState,\n} from '../types/index.js';\nimport { createFocusTrap, type FocusTrap } from '../focus-trap.js';\nimport { make } from '../util/dom.js';\nimport { buildIcon, ICON_CLOSE } from '../util/svg.js';\nimport {\n FEATURE_ICONS,\n ICON_CHECK,\n ICON_CHEVRON,\n ICON_GLOBE,\n ICON_GRIP,\n ICON_INFO,\n ICON_MAXIMIZE,\n ICON_RESET,\n} from '../util/feature-icons.js';\nimport { LANGUAGE_NAMES } from '../util/language-names.js';\nimport { makeDraggable, type DraggableHandle } from './drag.js';\nimport { t, translations, type Translation } from '../i18n/index.js';\nimport { applyState } from '../features/apply.js';\nimport { applyProfile } from '../features/profile.js';\nimport { collectReadableText, ttsActive, ttsStart, ttsStop } from '../features/tts.js';\nimport { structureNavToggle } from '../features/structure-nav.js';\nimport { cycleStep, saveState, STEPS } from '../state.js';\n\ninterface CycleDescriptor {\n readonly steps: readonly (number | string)[];\n readonly index: number;\n readonly max: number;\n readonly label: string;\n}\n\nfunction indexIn<T extends number | string>(steps: readonly T[], value: T): number {\n const i = (steps as readonly unknown[]).indexOf(value);\n return i < 0 ? 0 : i;\n}\n\nfunction describeCycle(id: FeatureId, state: WidgetState, T: Translation): CycleDescriptor | null {\n switch (id) {\n case 'fontSize':\n return {\n steps: STEPS.fontSize,\n index: state.features.fontSize ? indexIn(STEPS.fontSize, state.fontSizeLevel as never) : 0,\n max: STEPS.fontSize.length - 1,\n label: state.features.fontSize ? String(state.fontSizeLevel) : T.values.off,\n };\n case 'lineHeight':\n return {\n steps: STEPS.lineHeight,\n index: state.features.lineHeight\n ? indexIn(STEPS.lineHeight, state.lineHeightLevel as never)\n : 0,\n max: STEPS.lineHeight.length - 1,\n label: state.features.lineHeight ? String(state.lineHeightLevel) : T.values.off,\n };\n case 'letterSpacing':\n return {\n steps: STEPS.letterSpacing,\n index: state.features.letterSpacing\n ? indexIn(STEPS.letterSpacing, state.letterSpacingLevel as never)\n : 0,\n max: STEPS.letterSpacing.length - 1,\n label: state.features.letterSpacing ? String(state.letterSpacingLevel) : T.values.off,\n };\n case 'contrast':\n return {\n steps: STEPS.contrast,\n index: indexIn(STEPS.contrast, state.contrastMode),\n max: STEPS.contrast.length - 1,\n label: T.contrastLabels[state.contrastMode],\n };\n default:\n return null;\n }\n}\n\nfunction featureDescription(id: FeatureId, T: Translation): string {\n return T.featureDescriptions?.[id] ?? translations.en.featureDescriptions?.[id] ?? '';\n}\n\nfunction renderStageDots(currentIndex: number, max: number): HTMLElement {\n const dots: HTMLElement[] = [];\n for (let i = 0; i <= max; i += 1) {\n dots.push(\n make('span', {\n class: 'aw-stage-dot' + (i <= currentIndex && currentIndex > 0 ? ' is-filled' : ''),\n }),\n );\n }\n return make('span', {\n class: 'aw-stage-dots',\n attrs: { 'aria-hidden': 'true' },\n children: dots,\n });\n}\nimport type { ResolvedConfig } from '../config.js';\n\ninterface PanelContext {\n config: ResolvedConfig;\n locale: Locale;\n state: WidgetState;\n statementUrl?: string;\n onClose: () => void;\n onStateChange: (s: WidgetState) => void;\n}\n\nexport interface PanelHandle {\n root: HTMLDivElement;\n destroy(): void;\n rerender(): void;\n /**\n * Swap the active locale while the panel stays open. Silently no-ops\n * when the locale is already active or not supported.\n */\n setLocale(next: Locale): void;\n}\n\nexport function openPanel(ctx: PanelContext): PanelHandle {\n let locale = ctx.locale;\n let T = t(locale);\n let state = ctx.state;\n let liveEl: HTMLDivElement | null = null;\n let trap: FocusTrap | null = null;\n let drag: DraggableHandle | null = null;\n\n const root = make('div', {\n class: `aw-panel aw-panel--${ctx.config.position}`,\n attrs: {\n id: 'aw-panel',\n role: 'dialog',\n 'aria-modal': 'true',\n 'aria-labelledby': 'aw-panel-title',\n 'data-aw-panel': '1',\n dir: isRtl(locale) ? 'rtl' : 'ltr',\n lang: locale,\n },\n });\n\n function applyLocaleAttrs(): void {\n root.setAttribute('dir', isRtl(locale) ? 'rtl' : 'ltr');\n root.setAttribute('lang', locale);\n }\n\n function applyOversized(): void {\n root.classList.toggle('aw-panel--xl', Boolean(state.oversized));\n }\n applyOversized();\n\n function announce(text: string): void {\n if (liveEl) liveEl.textContent = text;\n }\n\n function commit(next: WidgetState, message?: string): void {\n state = next;\n applyState(state);\n saveState(ctx.config.storageKey, state);\n ctx.onStateChange(state);\n if (message) announce(message);\n rerender();\n }\n\n function rerender(): void {\n // Preserve focus across re-render via a language-stable selector.\n // aria-label would break when the user switches locale mid-session.\n const focusSelector = focusRestoreSelector();\n\n while (root.firstChild) root.removeChild(root.firstChild);\n build();\n attachDrag();\n\n if (focusSelector) root.querySelector<HTMLElement>(focusSelector)?.focus();\n }\n\n // Forward declaration so build()/commit() can reference it; defined below\n // after the initial DOM exists because it reads from `root` directly.\n function attachDrag(): void {\n const handle = root.querySelector<HTMLElement>('[data-aw-drag-handle]');\n if (!handle) return;\n drag?.destroy();\n drag = makeDraggable({ root, handle, storageKey: ctx.config.storageKey });\n }\n\n function focusRestoreSelector(): string | null {\n const el = document.activeElement;\n if (!(el instanceof HTMLElement) || !root.contains(el)) return null;\n for (const attr of ['data-feature', 'data-profile', 'data-aw-action'] as const) {\n const v = el.getAttribute(attr);\n if (v) return `[${attr}=\"${CSS.escape(v)}\"]`;\n }\n return null;\n }\n\n function build(): void {\n // Header ---------------------------------------------------------\n const closeBtn = make('button', {\n class: 'aw-close',\n attrs: { type: 'button', 'aria-label': T.close, 'data-aw-action': 'close' },\n on: { click: ctx.onClose },\n children: [buildIcon({ ...ICON_CLOSE, width: 20, height: 20 })],\n });\n const title = make('h2', {\n class: 'aw-title',\n attrs: { id: 'aw-panel-title' },\n text: T.title,\n });\n const gripIcon = make('span', {\n class: 'aw-drag-grip',\n attrs: { 'aria-hidden': 'true' },\n children: [buildIcon({ ...ICON_GRIP, width: 20, height: 20 })],\n });\n const header = make('header', {\n class: 'aw-header',\n attrs: { 'data-aw-drag-handle': '1', title: T.aria.dragHandle },\n children: [gripIcon, title, closeBtn],\n });\n\n // Toolbar: language + oversized ---------------------------------\n const langSelect = make('select', {\n class: 'aw-lang',\n attrs: { 'aria-label': T.aria.language, 'data-aw-action': 'language' },\n children: SUPPORTED_LOCALES.map((loc) =>\n make('option', {\n attrs: { value: loc, selected: loc === locale },\n text: LANGUAGE_NAMES[loc],\n }),\n ),\n on: {\n change: (ev) => {\n const next = (ev.target as HTMLSelectElement).value;\n if (isLocale(next) && next !== locale) {\n setActiveLocale(next);\n }\n },\n },\n });\n const langWrap = make('label', {\n class: 'aw-tool aw-tool--lang',\n children: [buildIcon({ ...ICON_GLOBE, width: 18, height: 18 }), langSelect],\n });\n\n const oversizedBtn = make('button', {\n class: 'aw-tool aw-tool--oversize' + (state.oversized ? ' is-on' : ''),\n attrs: {\n type: 'button',\n role: 'switch',\n 'aria-checked': state.oversized ? 'true' : 'false',\n 'aria-label': T.aria.oversized,\n 'data-aw-action': 'oversized',\n },\n children: [\n buildIcon({ ...ICON_MAXIMIZE, width: 18, height: 18 }),\n make('span', { text: T.aria.oversized }),\n ],\n on: {\n click: () => {\n const next = !state.oversized;\n commit({ ...state, oversized: next }, T.aria.oversized);\n applyOversized();\n },\n },\n });\n\n const toolbar = make('div', {\n class: 'aw-toolbar',\n attrs: { role: 'group', 'aria-label': T.title },\n children: [langWrap, oversizedBtn],\n });\n\n // Profiles -------------------------------------------------------\n const profGrid = make('div', {\n class: 'aw-profile-grid',\n attrs: { role: 'group', 'aria-label': T.profiles.h },\n children: PROFILE_IDS.map((id) =>\n make('button', {\n class: 'aw-profile-btn',\n attrs: { type: 'button', 'data-profile': id },\n text: T.profiles[id],\n on: {\n click: () => {\n const next = applyProfile(state, id);\n // Strip features the host has disabled so profile presets\n // can't re-enable them.\n for (const disabled of ctx.config.disabledFeatures) {\n next.features[disabled] = false;\n }\n commit(next, T.profiles[id]);\n },\n },\n }),\n ),\n });\n\n // Features -------------------------------------------------------\n const visibleFeatures = FEATURE_IDS.filter((id) => !ctx.config.disabledFeatures.has(id));\n const featGrid = make('div', {\n class: 'aw-feat-grid',\n attrs: { role: 'group', 'aria-label': T.features.h },\n children: visibleFeatures.map((id) => renderFeature(id, T)),\n });\n\n // Footer ---------------------------------------------------------\n const resetBtn = make('button', {\n class: 'aw-reset',\n attrs: { type: 'button', 'data-aw-action': 'reset' },\n children: [\n buildIcon({ ...ICON_RESET, width: 18, height: 18 }),\n make('span', { text: T.reset }),\n ],\n on: {\n click: () => {\n // Also clear any drag-dropped FAB position so it returns to its\n // config-defined anchor on next paint (user reset-intent spans\n // feature toggles AND visual overrides).\n const fab = document.querySelector<HTMLElement>('[data-aw-fab]');\n if (fab) {\n fab.removeAttribute('data-aw-fab-pos');\n fab.style.removeProperty('--aw-fab-x');\n fab.style.removeProperty('--aw-fab-y');\n }\n const fresh: WidgetState = {\n features: Object.fromEntries(\n FEATURE_IDS.map((id) => [id, false]),\n ) as WidgetState['features'],\n fontSizeLevel: 1,\n lineHeightLevel: 1.5,\n letterSpacingLevel: 0,\n contrastMode: 'off',\n fabPosition: null,\n };\n ttsStop();\n commit(fresh, T.resetDone);\n },\n },\n });\n\n liveEl = make('div', {\n class: 'aw-live',\n attrs: { 'aria-live': 'polite', 'aria-atomic': 'true' },\n });\n\n const footerChildren: HTMLElement[] = [resetBtn];\n if (ctx.statementUrl) {\n // Absolute / protocol-relative URLs point at a different origin;\n // open those in a new tab so the user doesn't lose their panel state\n // when reading the statement. rel=noopener+noreferrer is the standard\n // hardening against reverse-tabnabbing + referrer leakage on _blank.\n const isExternal = /^(?:https?:)?\\/\\//i.test(ctx.statementUrl);\n const attrs: Record<string, string> = { href: ctx.statementUrl };\n if (isExternal) {\n attrs.target = '_blank';\n attrs.rel = 'noopener noreferrer';\n }\n footerChildren.push(\n make('a', {\n class: 'aw-statement-link',\n attrs,\n text: T.statementLink,\n }),\n );\n }\n // Host-supplied disclaimer, no default. Kept as plain text so an\n // accidental HTML string doesn't become a markup injection vector.\n if (ctx.config.disclaimer) {\n footerChildren.push(make('p', { class: 'aw-disclaimer', text: ctx.config.disclaimer }));\n }\n\n // \"Powered by BAUER GROUP Accessibility-Widget\" \u2014 localised connector +\n // untranslated brand + link back to the product page. Opens in a new tab\n // (external origin) with the usual rel-hardening. Hosts can suppress the\n // whole line via `config.hidePoweredBy: true` for white-label deployments.\n if (!ctx.config.hidePoweredBy) {\n footerChildren.push(\n make('p', {\n class: 'aw-poweredby',\n children: [\n make('span', { text: `${T.poweredBy} ` }),\n make('a', {\n attrs: {\n href: 'https://accessibility-widget.app.professional-hosting.com',\n target: '_blank',\n rel: 'noopener noreferrer',\n },\n text: 'BAUER GROUP Accessibility-Widget',\n }),\n ],\n }),\n );\n }\n\n footerChildren.push(liveEl);\n const footer = make('footer', { class: 'aw-footer', children: footerChildren });\n\n root.appendChild(header);\n root.appendChild(toolbar);\n\n const profSummary = make('summary', {\n class: 'aw-h3 aw-summary',\n children: [\n make('span', { text: T.profiles.h }),\n buildIcon({ ...ICON_CHEVRON, width: 16, height: 16 }),\n ],\n });\n const profDetails = make('details', {\n class: 'aw-section aw-collapsible',\n attrs: { open: true },\n children: [profSummary, profGrid],\n });\n root.appendChild(profDetails);\n\n root.appendChild(\n make('div', {\n class: 'aw-section',\n children: [make('h3', { class: 'aw-h3', text: T.features.h }), featGrid],\n }),\n );\n root.appendChild(footer);\n }\n\n function renderFeature(id: FeatureId, T: Translation): HTMLElement {\n const label = T.features[id];\n const active = state.features[id];\n const cycle = describeCycle(id, state, T);\n const isCycle = cycle !== null;\n const description = featureDescription(id, T);\n\n const iconSpec = FEATURE_ICONS[id];\n const iconEl = make('span', {\n class: 'aw-feat-icon',\n children: [buildIcon({ ...iconSpec, width: 28, height: 28 })],\n });\n\n const activeBadge = make('span', {\n class: 'aw-feat-check',\n attrs: { 'aria-hidden': 'true' },\n children: [buildIcon({ ...ICON_CHECK, width: 14, height: 14 })],\n });\n\n const descId = `aw-desc-${id}`;\n const infoBadge = description\n ? make('span', {\n class: 'aw-feat-info',\n attrs: { 'aria-hidden': 'true', role: 'img', 'aria-label': T.aria.info },\n children: [buildIcon({ ...ICON_INFO, width: 14, height: 14 })],\n })\n : null;\n const descEl = description\n ? make('span', {\n class: 'aw-feat-tooltip',\n attrs: { id: descId, role: 'tooltip' },\n text: description,\n })\n : null;\n\n const children: (HTMLElement | null)[] = [\n infoBadge,\n iconEl,\n make('span', { class: 'aw-feat-label', text: label }),\n ];\n if (cycle) {\n children.push(renderStageDots(cycle.index, cycle.max));\n children.push(make('span', { class: 'aw-feat-badge', text: cycle.label }));\n } else {\n children.push(\n make('span', {\n class: 'aw-feat-badge',\n text: active ? T.values.on : T.values.off,\n }),\n );\n }\n children.push(activeBadge);\n\n const attrs: Record<string, string> = {\n type: 'button',\n 'aria-label': `${T.aria.switch} ${label}`,\n 'data-feature': id,\n };\n if (description) attrs['aria-describedby'] = descId;\n if (isCycle && cycle) {\n // Multi-stage control: expose slider semantics so screenreaders announce \"step 2 of 3\".\n attrs.role = 'slider';\n attrs['aria-valuemin'] = '0';\n attrs['aria-valuemax'] = String(cycle.max);\n attrs['aria-valuenow'] = String(cycle.index);\n attrs['aria-valuetext'] = cycle.label;\n } else {\n attrs.role = 'switch';\n attrs['aria-checked'] = active ? 'true' : 'false';\n }\n\n const button = make('button', {\n class: 'aw-feat' + (active ? ' is-on' : ''),\n attrs,\n children: children.filter((c): c is HTMLElement => c !== null),\n on: { click: () => onFeatureClick(id, label) },\n });\n\n if (!descEl) return button;\n return make('div', {\n class: 'aw-feat-wrap',\n children: [button, descEl],\n });\n }\n\n function onFeatureClick(id: FeatureId, label: string): void {\n if (id === 'tts') {\n if (ttsActive()) {\n ttsStop();\n commit({ ...state, features: { ...state.features, tts: false } }, label);\n } else {\n const text = collectReadableText();\n ttsStart(text, ctx.locale);\n commit({ ...state, features: { ...state.features, tts: true } }, label);\n }\n return;\n }\n if (id === 'structureNav') {\n const opened = structureNavToggle(T.aria.dialog);\n commit({ ...state, features: { ...state.features, structureNav: opened } }, label);\n return;\n }\n if (id === 'fontSize') {\n const { next, wrapped } = cycleStep(state.fontSizeLevel, STEPS.fontSize);\n commit(\n {\n ...state,\n fontSizeLevel: next,\n features: { ...state.features, fontSize: !wrapped },\n },\n label,\n );\n return;\n }\n if (id === 'lineHeight') {\n const { next, wrapped } = cycleStep(state.lineHeightLevel, STEPS.lineHeight);\n commit(\n {\n ...state,\n lineHeightLevel: next,\n features: { ...state.features, lineHeight: !wrapped },\n },\n label,\n );\n return;\n }\n if (id === 'letterSpacing') {\n const { next, wrapped } = cycleStep(state.letterSpacingLevel, STEPS.letterSpacing);\n commit(\n {\n ...state,\n letterSpacingLevel: next,\n features: { ...state.features, letterSpacing: !wrapped },\n },\n label,\n );\n return;\n }\n if (id === 'contrast') {\n const { next, wrapped } = cycleStep(state.contrastMode, CONTRAST_MODES);\n commit(\n {\n ...state,\n contrastMode: next,\n features: { ...state.features, contrast: !wrapped },\n },\n label,\n );\n return;\n }\n commit({ ...state, features: { ...state.features, [id]: !state.features[id] } }, label);\n }\n\n function onEsc(e: KeyboardEvent): void {\n if (e.key === 'Escape') ctx.onClose();\n }\n\n build();\n document.body.appendChild(root);\n trap = createFocusTrap(root);\n trap.activate();\n document.addEventListener('keydown', onEsc);\n root.querySelector<HTMLButtonElement>('.aw-close')?.focus();\n attachDrag();\n\n function setActiveLocale(next: Locale): void {\n if (next === locale || !isLocale(next)) return;\n locale = next;\n T = t(locale);\n applyLocaleAttrs();\n // Persist to state so the new locale survives page reload.\n state = { ...state, locale: next };\n saveState(ctx.config.storageKey, state);\n ctx.onStateChange(state);\n announce(LANGUAGE_NAMES[locale]);\n rerender();\n }\n\n return {\n root,\n destroy: () => {\n trap?.deactivate();\n drag?.destroy();\n drag = null;\n document.removeEventListener('keydown', onEsc);\n root.remove();\n },\n rerender,\n setLocale: setActiveLocale,\n };\n}\n", "import type { Locale, ProfileId, WidgetState } from '../types/index.js';\n\n/**\n * Public event map. Events are dispatched as `CustomEvent` on `document`\n * under the prefixed type name (`accessibility-widget:<name>`). Using\n * the DOM event system keeps loader and core decoupled \u2014 neither needs\n * to share a listener registry.\n */\nexport interface WidgetEventMap {\n stateChange: { state: WidgetState };\n open: { trigger?: HTMLElement | null };\n close: Record<string, never>;\n profileApplied: { profile: ProfileId; state: WidgetState };\n localeChanged: { locale: Locale };\n reset: Record<string, never>;\n}\n\nexport type WidgetEventName = keyof WidgetEventMap;\n\nconst PREFIX = 'accessibility-widget:';\n\nexport function dispatchWidgetEvent<K extends WidgetEventName>(\n name: K,\n detail: WidgetEventMap[K],\n): void {\n if (typeof document === 'undefined') return;\n try {\n document.dispatchEvent(new CustomEvent(PREFIX + name, { detail }));\n } catch {\n /* CustomEvent not supported on ancient browsers \u2014 widget drops this event */\n }\n}\n\n/**\n * Subscribe to a widget event. Returns an unsubscribe function.\n *\n * @example\n * ```ts\n * const off = onWidgetEvent('stateChange', (e) => analytics.track('a11y', e.state));\n * // later\n * off();\n * ```\n */\nexport function onWidgetEvent<K extends WidgetEventName>(\n name: K,\n handler: (detail: WidgetEventMap[K]) => void,\n): () => void {\n if (typeof document === 'undefined') return () => {};\n const listener = (e: Event): void => {\n handler((e as CustomEvent<WidgetEventMap[K]>).detail);\n };\n document.addEventListener(PREFIX + name, listener);\n return () => document.removeEventListener(PREFIX + name, listener);\n}\n", "/*!\n * BAUER GROUP Accessibility Widget \u2014 Core (on-demand bundle)\n * SPDX-License-Identifier: AGPL-3.0-only \u00B7 \u00A9 2026 BAUER GROUP\n * AGPL-3.0-only or commercial (info@bauer-group.com) \u2014 see LICENSE / LICENSING.md\n */\nimport {\n isLocale,\n PROFILE_IDS,\n type Locale,\n type ProfileId,\n type WidgetConfig,\n type WidgetState,\n} from './types/index.js';\nimport { resolveConfig, type ResolvedConfig } from './config.js';\nimport { applyState } from './features/apply.js';\nimport { applyProfile } from './features/profile.js';\nimport { loadState, saveState, clearState } from './state.js';\nimport { openPanel, type PanelHandle } from './panel/panel.js';\nimport { dispatchWidgetEvent } from './util/events.js';\n\nexport interface CoreOpenOptions {\n trigger?: HTMLElement;\n config?: WidgetConfig;\n locale?: Locale | 'auto';\n statementUrl?: string;\n}\n\nlet panel: PanelHandle | null = null;\nlet lastTrigger: HTMLElement | null = null;\n\n/**\n * Read the host-supplied config from window every time (over reading it\n * once at module load) so late mutations \u2014 e.g. SPA navigation that rewrites\n * AccessibilityWidgetConfig \u2014 are honored.\n */\nfunction readUserConfig(): WidgetConfig {\n if (typeof window === 'undefined') return {};\n return window.AccessibilityWidgetConfig ?? {};\n}\n\nfunction resolveActiveLocale(\n config: ResolvedConfig,\n state: WidgetState,\n explicit?: Locale | 'auto',\n): Locale {\n if (explicit && explicit !== 'auto' && isLocale(explicit)) return explicit;\n if (state.locale && isLocale(state.locale)) return state.locale;\n return config.locale;\n}\n\nfunction open(opts: CoreOpenOptions = {}): void {\n if (panel) return;\n const mergedInput: WidgetConfig = {\n ...readUserConfig(),\n ...(opts.config ?? {}),\n ...(opts.locale && opts.locale !== 'auto' ? { locale: opts.locale } : {}),\n };\n const config: ResolvedConfig = resolveConfig(mergedInput, navigator.language);\n const state = loadState(config.storageKey);\n const locale: Locale = resolveActiveLocale(config, state, opts.locale);\n\n lastTrigger = opts.trigger ?? (document.activeElement as HTMLElement | null);\n applyState(state);\n\n panel = openPanel({\n config,\n locale,\n state,\n // opts.statementUrl wins over config.statementUrl \u2014 covers the\n // \"open the widget with a one-off statement link\" edge case.\n statementUrl: opts.statementUrl ?? config.statementUrl ?? undefined,\n onClose: close,\n onStateChange: (next) => {\n dispatchWidgetEvent('stateChange', { state: next });\n },\n });\n dispatchWidgetEvent('open', { trigger: lastTrigger });\n}\n\nfunction close(): void {\n panel?.destroy();\n panel = null;\n lastTrigger?.focus();\n lastTrigger = null;\n dispatchWidgetEvent('close', {});\n}\n\nfunction set(id: string, value: unknown): void {\n const cfg = resolveConfig(readUserConfig(), navigator.language);\n if (cfg.disabledFeatures.has(id as never)) {\n if (cfg.debug) console.warn(`[aw] core.set: feature \"${id}\" is disabled by config; ignoring`);\n return;\n }\n const state = loadState(cfg.storageKey);\n if (id in state.features) {\n (state.features as Record<string, boolean>)[id] = Boolean(value);\n } else {\n (state as unknown as Record<string, unknown>)[id] = value;\n }\n saveState(cfg.storageKey, state);\n applyState(state);\n panel?.rerender();\n dispatchWidgetEvent('stateChange', { state });\n}\n\nfunction applyProfileById(id: string): boolean {\n const cfg = resolveConfig(readUserConfig(), navigator.language);\n if (!(PROFILE_IDS as readonly string[]).includes(id)) {\n if (cfg.debug) console.warn(`[aw] core.applyProfile: unknown profile \"${id}\"; ignoring`);\n return false;\n }\n const state = loadState(cfg.storageKey);\n const next = applyProfile(state, id as ProfileId);\n // Strip features the host has disabled so profile presets can't re-enable them.\n for (const disabled of cfg.disabledFeatures) {\n next.features[disabled] = false;\n }\n saveState(cfg.storageKey, next);\n applyState(next);\n panel?.rerender();\n dispatchWidgetEvent('profileApplied', { profile: id as ProfileId, state: next });\n dispatchWidgetEvent('stateChange', { state: next });\n return true;\n}\n\nfunction setLocale(next: string): boolean {\n const cfg = resolveConfig(readUserConfig(), navigator.language);\n if (!isLocale(next)) {\n if (cfg.debug)\n console.warn(`[aw] core.setLocale: \"${next}\" is not a supported locale; ignoring`);\n return false;\n }\n const state = loadState(cfg.storageKey);\n if (state.locale === next) return true;\n const updated: WidgetState = { ...state, locale: next };\n saveState(cfg.storageKey, updated);\n panel?.setLocale(next);\n dispatchWidgetEvent('localeChanged', { locale: next });\n dispatchWidgetEvent('stateChange', { state: updated });\n return true;\n}\n\nfunction reset(): void {\n const cfg = resolveConfig(readUserConfig(), navigator.language);\n clearState(cfg.storageKey);\n const fresh = loadState(cfg.storageKey);\n applyState(fresh);\n panel?.rerender();\n dispatchWidgetEvent('reset', {});\n dispatchWidgetEvent('stateChange', { state: fresh });\n}\n\nfunction getState(): WidgetState {\n const cfg = resolveConfig(readUserConfig(), navigator.language);\n return loadState(cfg.storageKey);\n}\n\nconst api = {\n open,\n close,\n set,\n applyProfile: applyProfileById,\n setLocale,\n reset,\n getState,\n version: __AW_VERSION__,\n};\n\nif (typeof window !== 'undefined') {\n window.AccessibilityWidgetCore = api;\n}\n\nexport default api;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["FEATURE_IDS", "CONTRAST_MODES", "PROFILE_IDS", "POSITIONS", "DEFAULT_STATE", "acc", "id", "PROFILES", "SUPPORTED_LOCALES", "RTL_LOCALES", "isRtl", "locale", "isLocale", "value", "normalizeLocale", "input", "fallback", "prefix", "warnIfDebug", "message", "error", "_a", "DEFAULTS", "NON_TRIVIAL_COLOR_RE", "resolveConfig", "input", "navLang", "_a", "_b", "_c", "_d", "_e", "_f", "_g", "_h", "_i", "cfg", "debug", "resolveLocale", "resolvePosition", "resolveOffset", "resolveZIndex", "resolvePrimaryColor", "resolveStorageKey", "resolveInitialFeatures", "resolveDisabledFeatures", "resolveStatementUrl", "resolveDisclaimer", "requested", "normalizeLocale", "isLocale", "warnIfDebug", "POSITIONS", "x", "finiteOr", "y", "trimmed", "valid", "validIds", "FEATURE_IDS", "key", "value", "result", "id", "fallback", "label", "n", "make", "tag", "opts", "el", "k", "v", "evt", "handler", "child", "toggleAttr", "name", "value", "maskEl", "handler", "readingMaskApply", "on", "e", "_a", "_b", "y", "guideEl", "handler", "readingGuideApply", "on", "e", "_a", "_b", "y", "HTML_ATTR", "applyState", "state", "html", "f", "toggleAttr", "readingMaskApply", "readingGuideApply", "applyProfile", "state", "profileId", "_a", "_b", "_c", "_d", "preset", "PROFILES", "next", "k", "v", "STEPS", "createDefaultState", "DEFAULT_STATE", "loadState", "storageKey", "_a", "_b", "_c", "_d", "_e", "_f", "raw", "parsed", "fresh", "next", "isLocale", "err", "warnIfDebug", "saveState", "state", "clearState", "cycleStep", "current", "steps", "_a", "idx", "nextIdx", "FOCUSABLE", "createFocusTrap", "root", "onKey", "e", "list", "el", "first", "last", "active", "SVG_NS", "buildIcon", "opts", "_a", "_b", "_c", "svg", "strokeMode", "p", "el", "c", "ICON_CLOSE", "FEATURE_ICONS", "ICON_RESET", "ICON_INFO", "ICON_GLOBE", "ICON_MAXIMIZE", "ICON_CHEVRON", "ICON_GRIP", "ICON_CHECK", "LANGUAGE_NAMES", "KEYBOARD_STEP", "EDGE_MARGIN", "loadPanelPosition", "storageKey", "raw", "positionKey", "parsed", "err", "warnIfDebug", "savePanelPosition", "pos", "makeDraggable", "opts", "root", "handle", "onChange", "current", "applyPosition", "dragging", "startX", "startY", "startLeft", "startTop", "pointerId", "onPointerDown", "ev", "target", "rect", "onPointerMove", "dx", "dy", "next", "clampToViewport", "onPointerUp", "onKey", "left", "top", "moved", "clearPosition", "maxX", "maxY", "de", "en", "fr", "es", "it", "pl", "tr", "ar", "zh", "hi", "pt", "bn", "ru", "ja", "ko", "vi", "fa", "ur", "th", "id", "he", "nl", "sv", "cs", "el", "hu", "ro", "uk", "translations", "de", "en", "fr", "es", "it", "pl", "tr", "ar", "zh", "hi", "pt", "bn", "ru", "ja", "ko", "vi", "fa", "ur", "th", "id", "he", "nl", "sv", "cs", "el", "hu", "ro", "uk", "t", "locale", "_a", "LOCALE_TO_BCP47", "active", "utter", "ttsSupported", "ttsActive", "ttsStart", "text", "locale", "rate", "ttsStop", "collectReadableText", "root", "limit", "_a", "excluded", "clone", "n", "NAV_ID", "structureNavToggle", "label", "existing", "nav", "closeBtn", "ul", "h", "i", "_a", "level", "li", "a", "indexIn", "steps", "value", "i", "describeCycle", "id", "state", "T", "STEPS", "featureDescription", "_a", "_b", "_c", "_d", "translations", "renderStageDots", "currentIndex", "max", "dots", "make", "openPanel", "ctx", "locale", "t", "liveEl", "trap", "drag", "root", "isRtl", "applyLocaleAttrs", "applyOversized", "announce", "text", "commit", "next", "message", "applyState", "saveState", "rerender", "focusSelector", "focusRestoreSelector", "build", "attachDrag", "handle", "makeDraggable", "el", "attr", "v", "closeBtn", "buildIcon", "ICON_CLOSE", "title", "gripIcon", "ICON_GRIP", "header", "langSelect", "SUPPORTED_LOCALES", "loc", "LANGUAGE_NAMES", "ev", "isLocale", "setActiveLocale", "langWrap", "ICON_GLOBE", "oversizedBtn", "ICON_MAXIMIZE", "toolbar", "profGrid", "PROFILE_IDS", "applyProfile", "disabled", "visibleFeatures", "FEATURE_IDS", "featGrid", "renderFeature", "resetBtn", "ICON_RESET", "fab", "fresh", "ttsStop", "footerChildren", "isExternal", "attrs", "footer", "profSummary", "ICON_CHEVRON", "profDetails", "label", "active", "cycle", "isCycle", "description", "iconSpec", "FEATURE_ICONS", "iconEl", "activeBadge", "ICON_CHECK", "descId", "infoBadge", "ICON_INFO", "descEl", "children", "button", "c", "onFeatureClick", "ttsActive", "collectReadableText", "ttsStart", "opened", "structureNavToggle", "wrapped", "cycleStep", "CONTRAST_MODES", "onEsc", "e", "createFocusTrap", "PREFIX", "dispatchWidgetEvent", "name", "detail", "panel", "lastTrigger", "readUserConfig", "_a", "resolveActiveLocale", "config", "state", "explicit", "isLocale", "open", "opts", "_b", "_c", "_d", "mergedInput", "resolveConfig", "loadState", "locale", "applyState", "openPanel", "close", "next", "dispatchWidgetEvent", "set", "id", "value", "cfg", "saveState", "applyProfileById", "PROFILE_IDS", "applyProfile", "disabled", "setLocale", "updated", "reset", "clearState", "fresh", "getState", "api", "core_default"]
|
|
7
|
+
}
|