UNPKG

@applicaster/zapp-react-native-ui-components

Version:

Applicaster Zapp React Native ui components for the Quick Brick App

174 lines (160 loc) 3.86 kB
import { getColor, ACTIVE_COLOR, BACKGROUND_COLOR, MAIN_TEXT_COLOR, FOCUSED_TEXT_COLOR, } from "../../../colors/index"; const Image = "Image"; const View = "View"; const Text = "Text"; const containerStyles = (styles) => ({ flex: 1, flexDirection: "column", width: 384, height: 436, borderRadius: 4, backgroundColor: getColor(BACKGROUND_COLOR, styles), marginRight: 48, marginBottom: 48, }); const textContainerStyles = (styles) => ({ flex: 1, flexDirection: "column", width: 384, height: 220, borderBottomLeftRadius: 4, borderBottomRightRadius: 4, backgroundColor: getColor(BACKGROUND_COLOR, styles), }); const focusedTextContainerStyles = (styles) => ({ ...textContainerStyles(styles), backgroundColor: getColor(ACTIVE_COLOR, styles), }); const imageStyle = { width: 384, height: 216, borderTopRightRadius: 4, borderTopLeftRadius: 4, }; const titleContainerStyles = { width: 336, 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 subtitleContainerStyles = { width: 336, height: 88, marginHorizontal: 24, marginTop: 24, overflow: "hidden", }; const subtitleStyles = (styles) => ({ fontSize: 24, fontWeight: "normal", opacity: 0.8, color: getColor(MAIN_TEXT_COLOR, styles), fontStyle: "normal", }); const focusedSubtitleStyles = (styles) => ({ ...subtitleStyles(styles), color: getColor(FOCUSED_TEXT_COLOR, styles), }); const viewTree = (state, styles) => [ { type: View, style: containerStyles(styles), elements: [ { type: Image, style: imageStyle, data: [ { func: "image_src_from_media_item", args: ["thumbnail-small"], propName: "uri", }, ], }, { type: View, style: state === "focused" ? focusedTextContainerStyles(styles) : textContainerStyles(styles), elements: [ { type: View, style: titleContainerStyles, elements: [ { type: Text, style: state === "focused" ? focusedTitleStyles(styles) : titleStyles(styles), data: [ { func: "path", args: ["title"], propName: "label", }, ], additionalProps: { numberOfLines: 2, }, }, ], }, { type: View, style: subtitleContainerStyles, elements: [ { type: Text, style: state === "focused" ? focusedSubtitleStyles(styles) : subtitleStyles(styles), data: [ { func: "path", args: ["summary"], propName: "label", }, ], additionalProps: { numberOfLines: 3, }, }, ], }, ], }, ], }, ]; export const DefaultCell = (styles) => ({ content_types: { default: { states: { default: viewTree("default", styles), focused: viewTree("focused", styles), selected: viewTree("focused", styles), focused_selected: viewTree("focused_selected", styles), }, }, }, });