UNPKG

@wordpress/components

Version:
86 lines (81 loc) 5.45 kB
import _extends from "@babel/runtime/helpers/esm/extends"; import { css as _css } from "emotion"; import { createElement } from "@wordpress/element"; /** * WordPress dependencies */ import { useMemo } from '@wordpress/element'; /** * Internal dependencies */ import { contextConnect } from '../context'; import { Elevation } from '../elevation'; import { View } from '../view'; import * as styles from './styles'; import { useCard } from './hook'; import CONFIG from '../../utils/config-values'; /** * @param {import('../context').ViewOwnProps<import('./types').CardProps, 'div'>} props * @param {import('react').Ref<any>} forwardedRef */ function Card(props, forwardedRef) { const { children, elevation, isRounded = true, ...otherProps } = useCard(props); const elevationBorderRadius = isRounded ? CONFIG.cardBorderRadius : 0; const elevationClassName = useMemo(() => /*#__PURE__*/_css({ borderRadius: elevationBorderRadius }, process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkB3b3JkcHJlc3MvY29tcG9uZW50cy9zcmMvdWkvY2FyZC9jb21wb25lbnQuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBK0JRIiwiZmlsZSI6IkB3b3JkcHJlc3MvY29tcG9uZW50cy9zcmMvdWkvY2FyZC9jb21wb25lbnQuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEV4dGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBjc3MgfSBmcm9tICdlbW90aW9uJztcblxuLyoqXG4gKiBXb3JkUHJlc3MgZGVwZW5kZW5jaWVzXG4gKi9cbmltcG9ydCB7IHVzZU1lbW8gfSBmcm9tICdAd29yZHByZXNzL2VsZW1lbnQnO1xuXG4vKipcbiAqIEludGVybmFsIGRlcGVuZGVuY2llc1xuICovXG5pbXBvcnQgeyBjb250ZXh0Q29ubmVjdCB9IGZyb20gJy4uL2NvbnRleHQnO1xuaW1wb3J0IHsgRWxldmF0aW9uIH0gZnJvbSAnLi4vZWxldmF0aW9uJztcbmltcG9ydCB7IFZpZXcgfSBmcm9tICcuLi92aWV3JztcbmltcG9ydCAqIGFzIHN0eWxlcyBmcm9tICcuL3N0eWxlcyc7XG5pbXBvcnQgeyB1c2VDYXJkIH0gZnJvbSAnLi9ob29rJztcbmltcG9ydCBDT05GSUcgZnJvbSAnLi4vLi4vdXRpbHMvY29uZmlnLXZhbHVlcyc7XG5cbi8qKlxuICogQHBhcmFtIHtpbXBvcnQoJy4uL2NvbnRleHQnKS5WaWV3T3duUHJvcHM8aW1wb3J0KCcuL3R5cGVzJykuQ2FyZFByb3BzLCAnZGl2Jz59IHByb3BzXG4gKiBAcGFyYW0ge2ltcG9ydCgncmVhY3QnKS5SZWY8YW55Pn0gZm9yd2FyZGVkUmVmXG4gKi9cbmZ1bmN0aW9uIENhcmQoIHByb3BzLCBmb3J3YXJkZWRSZWYgKSB7XG5cdGNvbnN0IHsgY2hpbGRyZW4sIGVsZXZhdGlvbiwgaXNSb3VuZGVkID0gdHJ1ZSwgLi4ub3RoZXJQcm9wcyB9ID0gdXNlQ2FyZChcblx0XHRwcm9wc1xuXHQpO1xuXHRjb25zdCBlbGV2YXRpb25Cb3JkZXJSYWRpdXMgPSBpc1JvdW5kZWQgPyBDT05GSUcuY2FyZEJvcmRlclJhZGl1cyA6IDA7XG5cblx0Y29uc3QgZWxldmF0aW9uQ2xhc3NOYW1lID0gdXNlTWVtbyhcblx0XHQoKSA9PiBjc3MoIHsgYm9yZGVyUmFkaXVzOiBlbGV2YXRpb25Cb3JkZXJSYWRpdXMgfSApLFxuXHRcdFsgZWxldmF0aW9uQm9yZGVyUmFkaXVzIF1cblx0KTtcblxuXHRyZXR1cm4gKFxuXHRcdDxWaWV3IHsgLi4ub3RoZXJQcm9wcyB9IHJlZj17IGZvcndhcmRlZFJlZiB9PlxuXHRcdFx0PFZpZXcgY3NzPXsgc3R5bGVzLkNvbnRlbnQgfT57IGNoaWxkcmVuIH08L1ZpZXc+XG5cdFx0XHQ8RWxldmF0aW9uXG5cdFx0XHRcdGNsYXNzTmFtZT17IGVsZXZhdGlvbkNsYXNzTmFtZSB9XG5cdFx0XHRcdGlzSW50ZXJhY3RpdmU9eyBmYWxzZSB9XG5cdFx0XHRcdHZhbHVlPXsgZWxldmF0aW9uID8gMSA6IDAgfVxuXHRcdFx0Lz5cblx0XHRcdDxFbGV2YXRpb25cblx0XHRcdFx0Y2xhc3NOYW1lPXsgZWxldmF0aW9uQ2xhc3NOYW1lIH1cblx0XHRcdFx0aXNJbnRlcmFjdGl2ZT17IGZhbHNlIH1cblx0XHRcdFx0dmFsdWU9eyBlbGV2YXRpb24gfVxuXHRcdFx0Lz5cblx0XHQ8L1ZpZXc+XG5cdCk7XG59XG5cbi8qKlxuICogYENhcmRgIGlzIGEgbGF5b3V0IGNvbXBvbmVudCwgcHJvdmlkaW5nIGEgZmxleGlibGUgYW5kIGV4dGVuc2libGUgY29udGVudCBjb250YWluZXIuXG4gKlxuICogYENhcmRgIHByb3ZpZGVzIGNvbnZlbmllbnQgc3ViLWNvbXBvbmVudHMgc3VjaCBhcyBgQ2FyZEJvZHlgLCBgQ2FyZEhlYWRlcmAsIGFuZCBgQ2FyZEZvb3RlcmAuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYGpzeFxuICogaW1wb3J0IHtcbiAqICAgQ2FyZCxcbiAqICAgQ2FyZEhlYWRlcixcbiAqICAgQ2FyZEJvZHksXG4gKiAgIENhcmRGb290ZXIsXG4gKiAgIFRleHQsXG4gKiAgIEhlYWRpbmcsXG4gKiB9IGZyb20gYEB3b3JkcHJlc3MvY29tcG9uZW50c2A7XG4gKlxuICogZnVuY3Rpb24gRXhhbXBsZSgpIHtcbiAqICAgcmV0dXJuIChcbiAqICAgICA8Q2FyZD5cbiAqICAgICAgIDxDYXJkSGVhZGVyPlxuICogICAgICAgICA8SGVhZGluZyBzaXplPXsgNCB9PkNhcmQgVGl0bGU8L0hlYWRpbmc+XG4gKiAgICAgICA8L0NhcmRIZWFkZXI+XG4gKiAgICAgICA8Q2FyZEJvZHk+XG4gKiAgICAgICAgIDxUZXh0PkNhcmQgQ29udGVudDwvVGV4dD5cbiAqICAgICAgIDwvQ2FyZEJvZHk+XG4gKiAgICAgICA8Q2FyZEZvb3Rlcj5cbiAqICAgICAgICAgPFRleHQ+Q2FyZCBGb290ZXI8L1RleHQ+XG4gKiAgICAgICA8L0NhcmRGb290ZXI+XG4gKiAgICAgPC9DYXJkPlxuICogICApO1xuICogfVxuICogYGBgXG4gKi9cbmNvbnN0IENvbm5lY3RlZENhcmQgPSBjb250ZXh0Q29ubmVjdCggQ2FyZCwgJ0NhcmQnICk7XG5cbmV4cG9ydCBkZWZhdWx0IENvbm5lY3RlZENhcmQ7XG4iXX0= */"), [elevationBorderRadius]); return createElement(View, _extends({}, otherProps, { ref: forwardedRef }), createElement(View, { css: styles.Content }, children), createElement(Elevation, { className: elevationClassName, isInteractive: false, value: elevation ? 1 : 0 }), createElement(Elevation, { className: elevationClassName, isInteractive: false, value: elevation })); } /** * `Card` is a layout component, providing a flexible and extensible content container. * * `Card` provides convenient sub-components such as `CardBody`, `CardHeader`, and `CardFooter`. * * @example * ```jsx * import { * Card, * CardHeader, * CardBody, * CardFooter, * Text, * Heading, * } from `@wordpress/components`; * * function Example() { * return ( * <Card> * <CardHeader> * <Heading size={ 4 }>Card Title</Heading> * </CardHeader> * <CardBody> * <Text>Card Content</Text> * </CardBody> * <CardFooter> * <Text>Card Footer</Text> * </CardFooter> * </Card> * ); * } * ``` */ const ConnectedCard = contextConnect(Card, 'Card'); export default ConnectedCard; //# sourceMappingURL=component.js.map