27 lines
867 B
TypeScript
27 lines
867 B
TypeScript
import * as React from 'react';
|
|
|
|
import { Checkbox as ChakraCheckbox } from '@chakra-ui/react';
|
|
|
|
export interface CheckboxProps extends ChakraCheckbox.RootProps {
|
|
icon?: React.ReactNode;
|
|
inputProps?: React.InputHTMLAttributes<HTMLInputElement>;
|
|
rootRef?: React.Ref<HTMLLabelElement>;
|
|
}
|
|
|
|
export const Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(
|
|
function Checkbox(props, ref) {
|
|
const { icon, children, inputProps, rootRef, ...rest } = props;
|
|
return (
|
|
<ChakraCheckbox.Root ref={rootRef} {...rest}>
|
|
<ChakraCheckbox.HiddenInput ref={ref} {...inputProps} />
|
|
<ChakraCheckbox.Control>
|
|
{icon || <ChakraCheckbox.Indicator />}
|
|
</ChakraCheckbox.Control>
|
|
{children != null && (
|
|
<ChakraCheckbox.Label>{children}</ChakraCheckbox.Label>
|
|
)}
|
|
</ChakraCheckbox.Root>
|
|
);
|
|
}
|
|
);
|