UNPKG

@td-design/react-native

Version:

react-native UI组件库

87 lines 2.39 kB
import React, { memo } from 'react'; import { StyleSheet } from 'react-native'; import { useTheme } from '@shopify/restyle'; import Box from '../box'; import Brief from '../brief'; import Flex from '../flex'; import helpers from '../helpers'; import Text from '../text'; const { ONE_PIXEL } = helpers; /** * Card 组件由Header(可选)/Content/Footer(可选)三部分组成 */ const Card = _ref => { let { icon, title, extra, renderHeader, footer, hideHeader, containerStyle, contentStyle, children } = _ref; return /*#__PURE__*/React.createElement(Box, { backgroundColor: "white", borderWidth: ONE_PIXEL, borderColor: "border", borderRadius: 'x2', style: containerStyle }, renderHeader ? renderHeader() : /*#__PURE__*/React.createElement(Header, { hideHeader, icon, title, extra }), /*#__PURE__*/React.createElement(Body, { footer, contentStyle }, children), !!footer && /*#__PURE__*/React.createElement(Box, { padding: "x2" }, footer)); }; Card.displayName = 'Card'; export default Card; const Header = /*#__PURE__*/memo(_ref2 => { let { hideHeader, icon, title, extra } = _ref2; if (hideHeader) return null; const Header = /*#__PURE__*/React.createElement(Flex, { justifyContent: "space-between" }, !!(icon || title) && /*#__PURE__*/React.createElement(Flex, null, !!icon && /*#__PURE__*/React.createElement(Box, null, icon), !!title && /*#__PURE__*/React.createElement(Box, null, typeof title === 'string' ? /*#__PURE__*/React.createElement(Text, { variant: "p0", color: "text" }, title) : title)), /*#__PURE__*/React.createElement(Brief, { brief: extra })); return /*#__PURE__*/React.createElement(Box, { borderBottomWidth: ONE_PIXEL, borderBottomColor: "border", paddingHorizontal: "x2", paddingVertical: 'x2', justifyContent: "center" }, Header); }); const Body = /*#__PURE__*/memo(_ref3 => { let { footer, contentStyle, children } = _ref3; const theme = useTheme(); return /*#__PURE__*/React.createElement(Box, { padding: "x2", style: footer ? StyleSheet.compose({ borderBottomWidth: ONE_PIXEL, borderBottomColor: theme.colors.border, paddingBottom: theme.spacing.x2 }, contentStyle) : contentStyle }, children); }); //# sourceMappingURL=index.js.map