summaryrefslogtreecommitdiffstats
path: root/src/components/atoms/forms/toggle.tsx
diff options
context:
space:
mode:
authorArmand Philippot <git@armandphilippot.com>2022-04-08 19:41:40 +0200
committerArmand Philippot <git@armandphilippot.com>2022-04-08 19:41:40 +0200
commita5df28fad0dae266a857ae110c43b3cb8b23c996 (patch)
treea32ea390e90697dc51c3ccb9018de9da2ee4fac3 /src/components/atoms/forms/toggle.tsx
parent5c75a302c2203cb3ebf31233121026b4775662cf (diff)
refactor: use a consistent classname prop and avoid children prop
I was using the FunctionComponent type for some component that do not use children. So I change the type to VoidFunctionComponent to avoid mistakes. I also rename all the "classes" or "additionalClasses" props to "className" to keep consistency between each components.
Diffstat (limited to 'src/components/atoms/forms/toggle.tsx')
-rw-r--r--src/components/atoms/forms/toggle.tsx26
1 files changed, 19 insertions, 7 deletions
diff --git a/src/components/atoms/forms/toggle.tsx b/src/components/atoms/forms/toggle.tsx
index e8e8c0f..7ef40ed 100644
--- a/src/components/atoms/forms/toggle.tsx
+++ b/src/components/atoms/forms/toggle.tsx
@@ -1,9 +1,16 @@
-import { FC, ReactElement } from 'react';
+import { ReactNode, VFC } from 'react';
+import Label, { LabelProps } from './label';
import styles from './toggle.module.scss';
export type ToggleChoices = {
- left: ReactElement | string;
- right: ReactElement | string;
+ /**
+ * The left part of the toggle field (unchecked).
+ */
+ left: ReactNode;
+ /**
+ * The right part of the toggle field (checked).
+ */
+ right: ReactNode;
};
export type ToggleProps = {
@@ -20,6 +27,10 @@ export type ToggleProps = {
*/
label: string;
/**
+ * The label size.
+ */
+ labelSize?: LabelProps['size'];
+ /**
* The input name.
*/
name: string;
@@ -38,13 +49,14 @@ export type ToggleProps = {
*
* Render a toggle with a label and two choices.
*/
-const Toggle: FC<ToggleProps> = ({
+const Toggle: VFC<ToggleProps> = ({
choices,
id,
label,
+ labelSize,
name,
- value,
setValue,
+ value,
}) => {
return (
<>
@@ -56,12 +68,12 @@ const Toggle: FC<ToggleProps> = ({
onChange={() => setValue(!value)}
className={styles.checkbox}
/>
- <label htmlFor={id} className={styles.label}>
+ <Label size={labelSize} htmlFor={id} className={styles.label}>
<span className={styles.title}>{label}</span>
{choices.left}
<span className={styles.toggle}></span>
{choices.right}
- </label>
+ </Label>
</>
);
};