UNPKG

2.46 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import classNames from 'classnames';
4import React, { useMemo } from 'react';
5import { useBootstrapPrefix } from './ThemeProvider';
6import createWithBsPrefix from './createWithBsPrefix';
7import divWithClassName from './divWithClassName';
8import CardContext from './CardContext';
9import CardImg from './CardImg';
10var DivStyledAsH5 = divWithClassName('h5');
11var DivStyledAsH6 = divWithClassName('h6');
12var CardBody = createWithBsPrefix('card-body');
13var CardTitle = createWithBsPrefix('card-title', {
14 Component: DivStyledAsH5
15});
16var CardSubtitle = createWithBsPrefix('card-subtitle', {
17 Component: DivStyledAsH6
18});
19var CardLink = createWithBsPrefix('card-link', {
20 Component: 'a'
21});
22var CardText = createWithBsPrefix('card-text', {
23 Component: 'p'
24});
25var CardHeader = createWithBsPrefix('card-header');
26var CardFooter = createWithBsPrefix('card-footer');
27var CardImgOverlay = createWithBsPrefix('card-img-overlay');
28var defaultProps = {
29 body: false
30};
31var Card = React.forwardRef(function (_ref, ref) {
32 var bsPrefix = _ref.bsPrefix,
33 className = _ref.className,
34 bg = _ref.bg,
35 text = _ref.text,
36 border = _ref.border,
37 body = _ref.body,
38 children = _ref.children,
39 _ref$as = _ref.as,
40 Component = _ref$as === void 0 ? 'div' : _ref$as,
41 props = _objectWithoutPropertiesLoose(_ref, ["bsPrefix", "className", "bg", "text", "border", "body", "children", "as"]);
42
43 var prefix = useBootstrapPrefix(bsPrefix, 'card');
44 var cardContext = useMemo(function () {
45 return {
46 cardHeaderBsPrefix: prefix + "-header"
47 };
48 }, [prefix]);
49 return /*#__PURE__*/React.createElement(CardContext.Provider, {
50 value: cardContext
51 }, /*#__PURE__*/React.createElement(Component, _extends({
52 ref: ref
53 }, props, {
54 className: classNames(className, prefix, bg && "bg-" + bg, text && "text-" + text, border && "border-" + border)
55 }), body ?
56 /*#__PURE__*/
57 // @ts-ignore
58 React.createElement(CardBody, null, children) : children));
59});
60Card.displayName = 'Card';
61Card.defaultProps = defaultProps;
62Card.Img = CardImg;
63Card.Title = CardTitle;
64Card.Subtitle = CardSubtitle;
65Card.Body = CardBody;
66Card.Link = CardLink;
67Card.Text = CardText;
68Card.Header = CardHeader;
69Card.Footer = CardFooter;
70Card.ImgOverlay = CardImgOverlay;
71export default Card;
\No newline at end of file