import type { CSSProperties } from 'react'; /** * CSS styles for visually hiding content while keeping it accessible to screen readers. * * This technique uses the "clip pattern" which is recommended by both WebAIM and The A11Y Project. * It hides content visually while ensuring it remains: * - Accessible to assistive technologies (screen readers) * - Available in the accessibility tree * - Not removed from the page flow completely * * @see https://webaim.org/techniques/css/invisiblecontent/ * @see https://www.a11yproject.com/posts/how-to-hide-content/ * @see https://www.scottohara.me/blog/2017/04/14/inclusively-hidden.html * * @example * ```tsx * // Using inline styles * Screen reader only text * * // In a component * * ``` * * @remarks * - Use `clip` for backwards compatibility with older browsers * - Use `clip-path` for modern browsers * - `white-space: nowrap` prevents text wrapping/breaking * - `position: absolute` removes from normal flow * - Small dimensions (1px) as fallback if positioning fails * * @warning * For focusable elements (links, buttons), ensure they become visible on focus. * Consider using a `:focus` variant that removes these styles. */ export declare const visuallyHidden: CSSProperties; /** * Creates visually hidden styles with optional focus visibility. * * When `showOnFocus` is true, returns undefined (no styles) which allows * focusable elements to become visible when they receive keyboard focus. * * @param showOnFocus - Whether the element should become visible when focused * @returns The visually hidden styles or undefined * * @example * ```tsx * // Skip link that shows on focus * * Skip to main content * * ``` */ export declare const getVisuallyHiddenStyles: (showOnFocus?: boolean) => CSSProperties | undefined;