// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { useMemo } from 'react'; import { v4 as uuid } from 'uuid'; import { getClassNamesFor } from '../util/getClassNamesFor'; export type PropsType = { checked?: boolean; children?: (childrenOpts: { id: string; checkboxNode: JSX.Element; labelNode: JSX.Element; checked?: boolean; }) => JSX.Element; description?: string; disabled?: boolean; isRadio?: boolean; label: string; moduleClassName?: string; name: string; onChange: (value: boolean) => unknown; onClick?: () => unknown; }; export const Checkbox = ({ checked, children, description, disabled, isRadio, label, moduleClassName, name, onChange, onClick, }: PropsType): JSX.Element => { const getClassName = getClassNamesFor('Checkbox', moduleClassName); const id = useMemo(() => `${name}::${uuid()}`, [name]); const checkboxNode = (