diff options
| author | Armand Philippot <git@armandphilippot.com> | 2022-05-24 16:05:03 +0200 |
|---|---|---|
| committer | Armand Philippot <git@armandphilippot.com> | 2022-05-24 16:05:03 +0200 |
| commit | e1cc2de22fc703d94e1151beb9526d8cbe0e49c1 (patch) | |
| tree | cffd9ada0c418d5e9fb02236c4a7bc050f4c0208 /src/components/molecules/forms/flipping-label.tsx | |
| parent | 525ea4c39c4965d9f6f7941cf203e56190d0ec1c (diff) | |
chore(toolbar): change icons to close button when activated
Diffstat (limited to 'src/components/molecules/forms/flipping-label.tsx')
| -rw-r--r-- | src/components/molecules/forms/flipping-label.tsx | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/components/molecules/forms/flipping-label.tsx b/src/components/molecules/forms/flipping-label.tsx new file mode 100644 index 0000000..c874369 --- /dev/null +++ b/src/components/molecules/forms/flipping-label.tsx @@ -0,0 +1,40 @@ +import Label, { LabelProps } from '@components/atoms/forms/label'; +import Close from '@components/atoms/icons/close'; +import { FC } from 'react'; +import styles from './flipping-label.module.scss'; + +export type FlippingLabelProps = Pick< + LabelProps, + 'aria-label' | 'className' | 'htmlFor' +> & { + /** + * The front icon. + */ + children: JSX.Element; + /** + * Which side of the label should be displayed? True for the close icon. + */ + isActive: boolean; +}; + +const FlippingLabel: FC<FlippingLabelProps> = ({ + children, + className = '', + isActive, + ...props +}) => { + const wrapperModifier = isActive ? 'wrapper--active' : 'wrapper--inactive'; + + return ( + <Label className={`${styles.label} ${className}`} {...props}> + <span className={`${styles.wrapper} ${styles[wrapperModifier]}`}> + <span className={styles.front}>{children}</span> + <span className={styles.back}> + <Close /> + </span> + </span> + </Label> + ); +}; + +export default FlippingLabel; |
