From 5d3e8a4d0c2ce2ad8f22df857ab3ce54fcfc38ac Mon Sep 17 00:00:00 2001 From: Armand Philippot Date: Fri, 3 Nov 2023 12:22:47 +0100 Subject: refactor(components): replace Toolbar with Navbar component * remove SearchModal and SettingsModal components * add a generic NavbarItem component (instead of the previous toolbar items to avoid unreadable styles...) * move FlippingLabel component logic into NavbarItem since it is only used here --- src/components/atoms/forms/label/label.tsx | 49 +++++++++++++++++++----------- 1 file changed, 31 insertions(+), 18 deletions(-) (limited to 'src/components/atoms/forms/label') diff --git a/src/components/atoms/forms/label/label.tsx b/src/components/atoms/forms/label/label.tsx index 6692205..bfd1a59 100644 --- a/src/components/atoms/forms/label/label.tsx +++ b/src/components/atoms/forms/label/label.tsx @@ -1,4 +1,9 @@ -import type { FC, LabelHTMLAttributes, ReactNode } from 'react'; +import { + forwardRef, + type ForwardRefRenderFunction, + type LabelHTMLAttributes, + type ReactNode, +} from 'react'; import styles from './label.module.scss'; export type LabelSize = 'md' | 'sm'; @@ -31,26 +36,27 @@ export type LabelProps = Omit< size?: LabelSize; }; -/** - * Label Component - * - * Render a HTML label element. - */ -export const Label: FC = ({ - children, - className = '', - isHidden = false, - isRequired = false, - size = 'sm', - ...props -}) => { - const visibilityClass = isHidden ? 'screen-reader-text' : ''; - const sizeClass = styles[`label--${size}`]; - const labelClass = `${styles.label} ${sizeClass} ${visibilityClass} ${className}`; +const LabelWithRef: ForwardRefRenderFunction = ( + { + children, + className = '', + isHidden = false, + isRequired = false, + size = 'sm', + ...props + }, + ref +) => { + const labelClass = [ + styles.label, + styles[`label--${size}`], + isHidden ? 'screen-reader-text' : '', + className, + ].join(' '); const requiredSymbol = ' *'; return ( -