LockButton.tsx 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import "./ToolIcon.scss";
  2. import clsx from "clsx";
  3. import { ToolButtonSize } from "./ToolButton";
  4. import { LockedIcon, UnlockedIcon } from "./icons";
  5. type LockIconProps = {
  6. title?: string;
  7. name?: string;
  8. checked: boolean;
  9. onChange?(): void;
  10. zenModeEnabled?: boolean;
  11. isMobile?: boolean;
  12. };
  13. const DEFAULT_SIZE: ToolButtonSize = "medium";
  14. const ICONS = {
  15. CHECKED: LockedIcon,
  16. UNCHECKED: UnlockedIcon,
  17. };
  18. export const LockButton = (props: LockIconProps) => {
  19. return (
  20. <label
  21. className={clsx(
  22. "ToolIcon ToolIcon__lock",
  23. `ToolIcon_size_${DEFAULT_SIZE}`,
  24. {
  25. "is-mobile": props.isMobile,
  26. },
  27. )}
  28. title={`${props.title} — Q`}
  29. >
  30. <input
  31. className="ToolIcon_type_checkbox"
  32. type="checkbox"
  33. name={props.name}
  34. onChange={props.onChange}
  35. checked={props.checked}
  36. aria-label={props.title}
  37. data-testid="toolbar-lock"
  38. />
  39. <div className="ToolIcon__icon">
  40. {props.checked ? ICONS.CHECKED : ICONS.UNCHECKED}
  41. </div>
  42. </label>
  43. );
  44. };