✨(react) add generic Field component
This component will wrap most of form components in order to provide them a generic state attribute along with texts below them.
This commit is contained in:
37
packages/react/src/components/Forms/Field/index.tsx
Normal file
37
packages/react/src/components/Forms/Field/index.tsx
Normal file
@@ -0,0 +1,37 @@
|
||||
import React, { PropsWithChildren } from "react";
|
||||
import classNames from "classnames";
|
||||
|
||||
export type FieldState = "success" | "error" | "default";
|
||||
|
||||
export type FieldProps = {
|
||||
state?: FieldState | undefined;
|
||||
text?: string | undefined;
|
||||
rightText?: string | undefined;
|
||||
fullWidth?: boolean | undefined;
|
||||
};
|
||||
|
||||
type Props = FieldProps & PropsWithChildren;
|
||||
|
||||
export const Field = ({
|
||||
children,
|
||||
state = "default",
|
||||
text,
|
||||
rightText,
|
||||
fullWidth,
|
||||
}: Props) => {
|
||||
return (
|
||||
<div
|
||||
className={classNames("c__field", "c__field--" + state, {
|
||||
"c__field--full-width": fullWidth,
|
||||
})}
|
||||
>
|
||||
{children}
|
||||
{(text || rightText) && (
|
||||
<div className="c__field__footer">
|
||||
<span className="c__field__text">{text}</span>
|
||||
<span className="c__field__text__right">{rightText}</span>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
Reference in New Issue
Block a user