-
-
Notifications
You must be signed in to change notification settings - Fork 121
/
BlockHeader.jsx
68 lines (51 loc) · 1.41 KB
/
BlockHeader.jsx
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
import React, { useRef, forwardRef, useImperativeHandle } from 'react';
import { BlockHeaderClasses } from '../../shared/classes/BlockHeaderClasses.js';
import { BlockHeaderColors } from '../../shared/colors/BlockHeaderColors.js';
import { useTheme } from '../shared/use-theme.js';
import { useThemeClasses } from '../shared/use-theme-classes.js';
import { useDarkClasses } from '../shared/use-dark-classes.js';
const BlockHeader = forwardRef((props, ref) => {
const {
component = 'div',
className,
colors: colorsProp,
ios,
material,
inset,
insetIos,
insetMaterial,
// Children
children,
// Rest
...rest
} = props;
const elRef = useRef(null);
useImperativeHandle(ref, () => ({
el: elRef.current,
}));
const Component = component;
const attrs = {
...rest,
};
const theme = useTheme();
const isInset =
typeof inset === 'undefined'
? theme === 'ios'
? insetIos
: insetMaterial
: inset;
const themeClasses = useThemeClasses({ ios, material });
const dark = useDarkClasses();
const colors = BlockHeaderColors(colorsProp, dark);
const c = themeClasses(
BlockHeaderClasses({ ...props, inset: isInset }, colors),
className
);
return (
<Component ref={elRef} className={c.base} {...attrs}>
{children}
</Component>
);
});
BlockHeader.displayName = 'BlockHeader';
export default BlockHeader;