UNPKG

stackpress

Version:

Incept is a content management framework.

30 lines (29 loc) 2.08 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = Crumbs; const jsx_runtime_1 = require("react/jsx-runtime"); const Item = ({ href, label, icon, last }) => { const item = href ? (0, jsx_runtime_1.jsx)("a", { href: href, className: "crumb", children: label }) : (0, jsx_runtime_1.jsx)("span", { className: "crumb", children: label }); return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [icon && (0, jsx_runtime_1.jsx)("i", { className: `icon fas fa-fw fa-${icon}` }), item, !last && (0, jsx_runtime_1.jsx)("i", { className: "next fas fa-fw fa-chevron-right" })] })); }; const Header = ({ trail }) => { var _a; if (trail.length === 0) return null; const item = trail[trail.length - 1]; const href = item.href || ((_a = trail[trail.length - 2]) === null || _a === void 0 ? void 0 : _a.href); if (href) { return ((0, jsx_runtime_1.jsxs)("a", { className: "crumbs-header", href: href, children: [(0, jsx_runtime_1.jsx)("i", { className: "back fas fa-fw fa-chevron-left" }), !!item.icon && (0, jsx_runtime_1.jsx)("i", { className: `icon fas fa-fw fa-${item.icon}` }), (0, jsx_runtime_1.jsx)("span", { className: "label", children: item.label })] })); } return ((0, jsx_runtime_1.jsxs)("div", { className: "crumbs-header", children: [!!item.icon && (0, jsx_runtime_1.jsx)("i", { className: `icon fas fa-fw fa-${item.icon}` }), (0, jsx_runtime_1.jsx)("span", { className: "label", children: item.label })] })); }; function Crumbs({ crumbs, className }) { const trail = [...crumbs].filter(item => !!item.label); const classNames = ['crumbs']; if (className) { classNames.push(className); } return ((0, jsx_runtime_1.jsxs)("nav", { children: [(0, jsx_runtime_1.jsx)("div", { className: classNames.join(' '), children: trail.map((item, key) => ((0, jsx_runtime_1.jsx)(Item, { href: item.href, label: item.label, icon: item.icon, last: key === (trail.length - 1) }, key))) }), (0, jsx_runtime_1.jsx)(Header, { trail: trail })] })); }