UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

160 lines 7 kB
/** * Modos de contraste suportados pelo widget de acessibilidade */ export type ContrastMode = 'normal' | 'high' | 'inverted'; /** * Modos de saturação para usuários com sensibilidade visual */ export type SaturationMode = 'normal' | 'grayscale' | 'low'; /** * Auxiliares de leitura mutuamente exclusivos: * - `none`: nenhum auxiliar * - `ruler`: linha horizontal acompanha o cursor * - `mask`: escurece a tela exceto uma faixa central na altura do cursor */ export type ReadingAid = 'none' | 'ruler' | 'mask'; /** * Modo do leitor de texto (TTS): * - `off`: leitor desligado * - `click-to-read`: usuário clica em um elemento e o widget lê o texto dele * - `read-selection`: usuário pressiona "Ler seleção" para falar o texto selecionado */ export type TTSMode = 'off' | 'click-to-read' | 'read-selection'; /** Status runtime da síntese de voz — não persistido. */ export type TTSStatus = 'idle' | 'speaking' | 'paused'; /** * Modos de daltonismo. Aplicam matrizes `<feColorMatrix>` (SVG) que * remapeiam cores para ajudar usuários com cada tipo de discromatopsia. * * Enum (e não union de strings como os outros modos) porque cada valor * é também usado como identificador estável em três outros lugares — * classes CSS, IDs de filter SVG e seletores no CSS — então centralizar * em um enum + helpers evita strings duplicadas e typos silenciosos. */ export declare enum ColorBlindMode { None = "none", Protanopia = "protanopia", Deuteranopia = "deuteranopia", Tritanopia = "tritanopia" } /** * Retorna a classe CSS aplicada no `<html>` para o modo informado, ou * `null` quando nenhum modo está ativo. */ export declare const getColorBlindClass: (mode: ColorBlindMode) => string | null; /** Retorna o id do `<filter>` SVG correspondente ao modo. */ export declare const getColorBlindFilterId: (mode: Exclude<ColorBlindMode, ColorBlindMode.None>) => string; /** * Níveis discretos para tamanho de fonte (0 = padrão da página) */ export type FontSizeLevel = 0 | 1 | 2 | 3; /** * Níveis discretos para espaçamento entre letras e linhas */ export type SpacingLevel = 0 | 1 | 2 | 3; /** * Conjunto completo de preferências persistidas */ export interface AccessibilityPreferences { contrastMode: ContrastMode; saturationMode: SaturationMode; fontSize: FontSizeLevel; letterSpacing: SpacingLevel; lineSpacing: SpacingLevel; highlightLinks: boolean; pauseAnimations: boolean; bigCursor: boolean; /** Fonte amigável para dislexia (OpenDyslexic com fallback Comic Sans MS) */ dyslexiaFont: boolean; /** Auxiliar visual de leitura (régua, máscara ou nenhum) */ readingAid: ReadingAid; /** Habilita atalho Alt+A para abrir/fechar o painel */ keyboardShortcut: boolean; /** Modo de daltonismo aplicado (filtro SVG na página inteira) */ colorBlindMode: ColorBlindMode; /** Modo do leitor de texto (TTS) */ ttsMode: TTSMode; /** Velocidade da fala (0.5 a 2.0) */ ttsRate: number; /** Voz selecionada pelo usuário (id retornado pelo provider) ou null para padrão */ ttsVoiceId: string | null; /** Habilita o widget VLibras (gov.br) — carregado lazy ao ativar */ librasEnabled: boolean; } export interface AccessibilityState extends AccessibilityPreferences { /** Indica se o painel de acessibilidade está aberto */ isPanelOpen: boolean; /** Status runtime da síntese de voz — não persistido */ ttsStatus: TTSStatus; } export interface AccessibilityActions { setContrastMode: (mode: ContrastMode) => void; setSaturationMode: (mode: SaturationMode) => void; setFontSize: (level: FontSizeLevel) => void; setLetterSpacing: (level: SpacingLevel) => void; setLineSpacing: (level: SpacingLevel) => void; setHighlightLinks: (value: boolean) => void; setPauseAnimations: (value: boolean) => void; setBigCursor: (value: boolean) => void; setDyslexiaFont: (value: boolean) => void; setReadingAid: (mode: ReadingAid) => void; setKeyboardShortcut: (value: boolean) => void; setColorBlindMode: (mode: ColorBlindMode) => void; setTTSMode: (mode: TTSMode) => void; setTTSRate: (rate: number) => void; setTTSVoiceId: (id: string | null) => void; setTTSStatus: (status: TTSStatus) => void; setLibrasEnabled: (value: boolean) => void; /** Restaura todas as preferências para o estado padrão */ resetPreferences: () => void; openPanel: () => void; closePanel: () => void; togglePanel: () => void; } export type AccessibilityStore = AccessibilityState & AccessibilityActions; export declare const DEFAULT_ACCESSIBILITY_PREFERENCES: AccessibilityPreferences; /** * Store Zustand com persistência em localStorage para preferências * de acessibilidade. As preferências são aplicadas ao DOM pelo hook * `useA11yPreferences` — este store apenas guarda o estado. */ export declare const useAccessibilityStore: import("zustand").UseBoundStore<Omit<Omit<import("zustand").StoreApi<AccessibilityStore>, "setState" | "devtools"> & { setState(partial: AccessibilityStore | Partial<AccessibilityStore> | ((state: AccessibilityStore) => AccessibilityStore | Partial<AccessibilityStore>), replace?: false | undefined, action?: (string | { [x: string]: unknown; [x: number]: unknown; [x: symbol]: unknown; type: string; }) | undefined): void; setState(state: AccessibilityStore | ((state: AccessibilityStore) => AccessibilityStore), replace: true, action?: (string | { [x: string]: unknown; [x: number]: unknown; [x: symbol]: unknown; type: string; }) | undefined): void; devtools: { cleanup: () => void; }; }, "setState" | "persist"> & { setState(partial: AccessibilityStore | Partial<AccessibilityStore> | ((state: AccessibilityStore) => AccessibilityStore | Partial<AccessibilityStore>), replace?: false | undefined, action?: (string | { [x: string]: unknown; [x: number]: unknown; [x: symbol]: unknown; type: string; }) | undefined): unknown; setState(state: AccessibilityStore | ((state: AccessibilityStore) => AccessibilityStore), replace: true, action?: (string | { [x: string]: unknown; [x: number]: unknown; [x: symbol]: unknown; type: string; }) | undefined): unknown; persist: { setOptions: (options: Partial<import("zustand/middleware").PersistOptions<AccessibilityStore, any, unknown>>) => void; clearStorage: () => void; rehydrate: () => Promise<void> | void; hasHydrated: () => boolean; onHydrate: (fn: (state: AccessibilityStore) => void) => () => void; onFinishHydration: (fn: (state: AccessibilityStore) => void) => () => void; getOptions: () => Partial<import("zustand/middleware").PersistOptions<AccessibilityStore, any, unknown>>; }; }>; //# sourceMappingURL=accessibilityStore.d.ts.map