diff options
Diffstat (limited to 'src/components/FormElements/Form')
| -rw-r--r-- | src/components/FormElements/Form/Form.module.scss | 37 | ||||
| -rw-r--r-- | src/components/FormElements/Form/Form.tsx | 27 | 
2 files changed, 64 insertions, 0 deletions
| diff --git a/src/components/FormElements/Form/Form.module.scss b/src/components/FormElements/Form/Form.module.scss new file mode 100644 index 0000000..0f7c437 --- /dev/null +++ b/src/components/FormElements/Form/Form.module.scss @@ -0,0 +1,37 @@ +@use "@styles/abstracts/functions" as fun; + +.wrapper { +  width: 100%; +} + +.centered { +  max-width: 45ch; +  margin-left: auto; +  margin-right: auto; +} + +.search { +  display: flex; +  flex-flow: row nowrap; +  align-items: center; + +  > input { +    padding-right: calc(var(--btn-size) + var(--spacing-2xs)); + +    &:hover ~ button { +      transform: translate(fun.convert-px(-3), fun.convert-px(-3)); +    } + +    &:focus ~ button { +      transform: translate(fun.convert-px(3), fun.convert-px(3)); +    } +  } +} + +.settings { +  display: flex; +  flex-flow: row nowrap; +  align-items: center; +  margin: var(--spacing-sm) 0; +  position: relative; +} diff --git a/src/components/FormElements/Form/Form.tsx b/src/components/FormElements/Form/Form.tsx new file mode 100644 index 0000000..10fdcdf --- /dev/null +++ b/src/components/FormElements/Form/Form.tsx @@ -0,0 +1,27 @@ +import { ReactNode } from 'react'; +import styles from './Form.module.scss'; + +type FormKind = 'centered' | 'search' | 'settings'; + +const Form = ({ +  children, +  submitHandler, +  kind, +  id, +}: { +  children: ReactNode; +  submitHandler: any; +  kind?: FormKind; +  id?: string; +}) => { +  const kindStyles = kind ? styles[kind] : ''; +  const classes = `${styles.wrapper} ${kindStyles}`; + +  return ( +    <form onSubmit={submitHandler} className={classes} id={id}> +      {children} +    </form> +  ); +}; + +export default Form; | 
