-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathDivider.tsx
41 lines (38 loc) · 1.18 KB
/
Divider.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { FC, ReactElement } from 'react';
import styles from './divider.module.css';
export interface DividerProps {
isVertical?: boolean;
justify?: 'start' | 'end' | '';
size?: 'small' | 'large' | 'xlarge' | '';
type?: 'info' | 'success' | 'warning' | 'error' | '';
children?: ReactElement;
}
export const Divider: FC<DividerProps> = ({
isVertical = false,
justify = '',
size = '',
type = '',
children,
}): ReactElement => {
const sizeCapitalized = size ? `${size.slice(0, 1).toUpperCase()}${size.slice(1)}` : '';
const typeCapitalized = type ? `${type.slice(0, 1).toUpperCase()}${type.slice(1)}` : '';
const justifyCapitalized = justify
? `${justify.slice(0, 1).toUpperCase()}${justify.slice(1)}`
: '';
const dividerClasses = [
styles.divider,
isVertical ? styles.dividerVertical : '',
size ? styles[`divider${sizeCapitalized}`] : '',
type ? styles[`divider${typeCapitalized}`] : '',
justify ? styles[`divider${justifyCapitalized}`] : '',
]
.filter((cl) => cl)
.join(' ');
return (
<>
<div className={dividerClasses}>
{children && <div className={styles.dividerContent}>{children}</div>}
</div>
</>
);
};