@applicaster/zapp-react-native-ui-components
Version:
Applicaster Zapp React Native ui components for the Quick Brick App
112 lines (102 loc) • 2.21 kB
JavaScript
import {
getColor,
ACTIVE_COLOR,
BACKGROUND_COLOR,
MAIN_TEXT_COLOR,
FOCUSED_TEXT_COLOR,
} from "../colors";
const Image = "Image";
const View = "View";
const Text = "Text";
const containerStyles = (styles) => ({
flex: 1,
flexDirection: "column",
width: 1280,
height: 436,
borderRadius: 4,
backgroundColor: getColor(BACKGROUND_COLOR, styles),
marginRight: 48,
marginBottom: 48,
});
const focusedContainerStyles = (styles) => ({
...containerStyles(styles),
backgroundColor: getColor(ACTIVE_COLOR, styles),
});
const imageStyle = {
width: 1280,
height: 352,
borderTopRightRadius: 4,
borderTopLeftRadius: 4,
};
const titleContainerStyles = {
width: 1184,
height: 60,
marginHorizontal: 24,
marginTop: 24,
overflow: "hidden",
};
const titleStyles = (styles) => ({
fontSize: 26,
color: getColor(MAIN_TEXT_COLOR, styles),
fontWeight: "bold",
fontStyle: "normal",
});
const focusedTitleStyles = (styles) => ({
...titleStyles(styles),
color: getColor(FOCUSED_TEXT_COLOR, styles),
});
const viewTree = (state, styles) => [
{
type: View,
style:
state === "focused"
? focusedContainerStyles(styles)
: containerStyles(styles),
elements: [
{
type: Image,
style: imageStyle,
data: [
{
func: "image_src_from_media_item",
args: ["thumbnail-small"],
propName: "uri",
},
],
},
{
type: View,
style: titleContainerStyles,
elements: [
{
type: Text,
style:
state === "focused"
? focusedTitleStyles(styles)
: titleStyles(styles),
data: [
{
func: "path",
args: ["title"],
propName: "label",
},
],
additionalProps: {
numberOfLines: 2,
},
},
],
},
],
},
];
export const hero = (styles) => ({
content_types: {
default: {
states: {
default: viewTree("default", styles),
focused: viewTree("focused", styles),
},
},
},
});