reakit
Version:
Toolkit for building accessible rich web apps with React
45 lines (38 loc) • 1.09 kB
text/typescript
import { createComponent } from "reakit-system/createComponent";
import { createHook } from "reakit-system/createHook";
import { RoleOptions, RoleHTMLProps, useRole } from "../Role/Role";
import { VISUALLY_HIDDEN_KEYS } from "./__keys";
export type VisuallyHiddenOptions = RoleOptions;
export type VisuallyHiddenHTMLProps = RoleHTMLProps;
export type VisuallyHiddenProps = VisuallyHiddenOptions &
VisuallyHiddenHTMLProps;
export const useVisuallyHidden = createHook<
VisuallyHiddenOptions,
VisuallyHiddenHTMLProps
>({
name: "VisuallyHidden",
compose: useRole,
keys: VISUALLY_HIDDEN_KEYS,
useProps(_, { style: htmlStyle, ...htmlProps }) {
return {
style: {
border: 0,
clip: "rect(0 0 0 0)",
height: "1px",
margin: "-1px",
overflow: "hidden",
padding: 0,
position: "absolute",
whiteSpace: "nowrap",
width: "1px",
...htmlStyle,
},
...htmlProps,
};
},
});
export const VisuallyHidden = createComponent({
as: "span",
memo: true,
useHook: useVisuallyHidden,
});