@kiwicom/orbit-components
Version:
Orbit-components is a React component library which provides developers with the easiest possible way of building Kiwi.com's products.
78 lines (77 loc) • 2.54 kB
JavaScript
"use strict";
"use client";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
exports.__esModule = true;
exports.CardSection = void 0;
exports.default = Card;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var React = _interopRequireWildcard(require("react"));
var _clsx = _interopRequireDefault(require("clsx"));
var _consts = require("../Heading/consts");
var _Header = _interopRequireDefault(require("./components/Header"));
var _tailwind = require("../common/tailwind");
var _Loading = _interopRequireDefault(require("../Loading"));
var _CardSection = _interopRequireDefault(require("./CardSection"));
exports.CardSection = _CardSection.default;
function Card({
title,
titleAs = _consts.ELEMENT_OPTIONS.DIV,
actions,
description,
children,
labelClose = "Close",
dataTest,
id,
onClose,
loading,
margin,
header,
spaceAfter,
dataA11ySection,
loadingTitle,
loadingHidden
}) {
const marginStyles = (() => {
if (margin == null) {
return {};
}
if (typeof margin === "string" || typeof margin === "number") {
return {
margin
};
}
return {
marginTop: margin.top,
marginRight: margin.right,
marginBottom: margin.bottom,
marginLeft: margin.left
};
})();
return /*#__PURE__*/React.createElement("div", {
id: id,
className: (0, _clsx.default)("orbit-card font-base bg-white-normal *:border-elevation-flat-border-color lm:first:*:rounded-t-300 lm:last:*:rounded-b-300 w-full first:*:border-t", spaceAfter != null && _tailwind.spaceAfterClasses[spaceAfter]),
"data-test": dataTest,
style: marginStyles
}, (title != null || header != null) && !loading && /*#__PURE__*/React.createElement("div", {
className: "p-400 lm:p-600 lm:border-x relative border-b"
}, /*#__PURE__*/React.createElement(_Header.default, {
description: description,
dataA11ySection: dataA11ySection,
actions: actions,
title: title,
labelClose: labelClose,
titleAs: titleAs,
onClose: onClose,
header: header
})), !loading && children, loading && /*#__PURE__*/React.createElement("div", {
className: "lm:border-x border-b"
}, /*#__PURE__*/React.createElement(_Loading.default, (0, _extends2.default)({
loading: loading,
type: "boxLoader"
}, loadingHidden ? {
ariaHidden: true
} : {
title: loadingTitle
}))));
}