Files
klz-cables.com/.pnpm-store/v10/files/89/41d668467262a50d2ec8b09a396e212a0e6ff0724d178b85517cee0c734d014e8621dc2ba41d3f97130ed18aa208d849f46f412fb76943fef035a8218a6191
Marc Mintel 5397309103
Some checks failed
Build & Deploy / 🔍 Prepare (push) Successful in 20s
Build & Deploy / 🧪 QA (push) Failing after 34s
Build & Deploy / 🏗️ Build (push) Has started running
Build & Deploy / 🚀 Deploy (push) Has been cancelled
Build & Deploy / 🧪 Smoke Test (push) Has been cancelled
Build & Deploy / ⚡ Lighthouse (push) Has been cancelled
Build & Deploy / 🔔 Notify (push) Has been cancelled
fix(products): fix breadcrumbs and product filtering (backport from main)
2026-02-24 16:04:21 +01:00

180 lines
5.5 KiB
Plaintext

'use client';
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
import React, { Fragment, isValidElement } from 'react';
import { ChevronIcon } from '../../icons/Chevron/index.js';
import { EditIcon } from '../../icons/Edit/index.js';
import { LinkIcon } from '../../icons/Link/index.js';
import { PlusIcon } from '../../icons/Plus/index.js';
import { SwapIcon } from '../../icons/Swap/index.js';
import { XIcon } from '../../icons/X/index.js';
import { Link } from '../Link/index.js';
import { Popup } from '../Popup/index.js';
import './index.scss';
import { Tooltip } from '../Tooltip/index.js';
const icons = {
chevron: ChevronIcon,
edit: EditIcon,
link: LinkIcon,
plus: PlusIcon,
swap: SwapIcon,
x: XIcon
};
const baseClass = 'btn';
export const ButtonContents = ({
children,
icon,
showTooltip,
tooltip
}) => {
const BuiltInIcon = icons[icon];
return /*#__PURE__*/_jsxs(Fragment, {
children: [tooltip && /*#__PURE__*/_jsx(Tooltip, {
className: `${baseClass}__tooltip`,
show: showTooltip,
children: tooltip
}), /*#__PURE__*/_jsxs("span", {
className: `${baseClass}__content`,
children: [children && /*#__PURE__*/_jsx("span", {
className: `${baseClass}__label`,
children: children
}), icon && /*#__PURE__*/_jsxs("span", {
className: `${baseClass}__icon`,
children: [/*#__PURE__*/isValidElement(icon) && icon, BuiltInIcon && /*#__PURE__*/_jsx(BuiltInIcon, {})]
})]
})]
});
};
export const Button = props => {
const {
id,
type = 'button',
'aria-label': ariaLabel,
buttonStyle = 'primary',
children,
className,
disabled,
el = 'button',
enableSubMenu,
extraButtonProps = {},
icon,
iconPosition = 'right',
iconStyle = 'without-border',
margin = true,
newTab,
onClick,
onMouseDown,
ref,
round,
size = 'medium',
SubMenuPopupContent,
to,
tooltip,
url
} = props;
const [showTooltip, setShowTooltip] = React.useState(false);
const classes = [baseClass, className && className, icon && `${baseClass}--icon`, iconStyle && `${baseClass}--icon-style-${iconStyle}`, icon && !children && `${baseClass}--icon-only`, size && `${baseClass}--size-${size}`, icon && iconPosition && `${baseClass}--icon-position-${iconPosition}`, tooltip && `${baseClass}--has-tooltip`, !SubMenuPopupContent && `${baseClass}--withoutPopup`, !margin && `${baseClass}--no-margin`].filter(Boolean).join(' ');
function handleClick(event) {
setShowTooltip(false);
if (type !== 'submit' && onClick) {
event.preventDefault();
}
if (onClick) {
onClick(event);
}
}
const styleClasses = [buttonStyle && `${baseClass}--style-${buttonStyle}`, disabled && `${baseClass}--disabled`, round && `${baseClass}--round`, SubMenuPopupContent ? `${baseClass}--withPopup` : `${baseClass}--withoutPopup`].filter(Boolean).join(' ');
const buttonProps = {
id,
type,
'aria-disabled': disabled,
'aria-label': ariaLabel,
className: !SubMenuPopupContent ? [classes, styleClasses].join(' ') : classes,
disabled,
onClick: !disabled ? handleClick : undefined,
onMouseDown: !disabled ? onMouseDown : undefined,
onPointerEnter: tooltip ? () => setShowTooltip(true) : undefined,
onPointerLeave: tooltip ? () => setShowTooltip(false) : undefined,
rel: newTab ? 'noopener noreferrer' : undefined,
target: newTab ? '_blank' : undefined,
title: ariaLabel,
...extraButtonProps
};
let buttonElement;
switch (el) {
case 'anchor':
buttonElement = /*#__PURE__*/_jsx("a", {
...buttonProps,
href: !disabled ? url : undefined,
ref: ref,
children: /*#__PURE__*/_jsx(ButtonContents, {
icon: icon,
showTooltip: showTooltip,
tooltip: tooltip,
children: children
})
});
break;
case 'link':
if (disabled) {
buttonElement = /*#__PURE__*/_jsx("div", {
...buttonProps,
children: /*#__PURE__*/_jsx(ButtonContents, {
icon: icon,
showTooltip: showTooltip,
tooltip: tooltip,
children: children
})
});
}
buttonElement = /*#__PURE__*/_jsx(Link, {
...buttonProps,
href: to || url,
prefetch: false,
children: /*#__PURE__*/_jsx(ButtonContents, {
icon: icon,
showTooltip: showTooltip,
tooltip: tooltip,
children: children
})
});
break;
default:
const Tag = el // eslint-disable-line no-case-declarations
;
buttonElement = /*#__PURE__*/_jsx(Tag, {
ref: ref,
...buttonProps,
children: /*#__PURE__*/_jsx(ButtonContents, {
icon: icon,
showTooltip: showTooltip,
tooltip: tooltip,
children: children
})
});
break;
}
if (SubMenuPopupContent) {
return /*#__PURE__*/_jsxs("div", {
className: styleClasses,
children: [buttonElement, /*#__PURE__*/_jsx(Popup, {
button: /*#__PURE__*/_jsx(ChevronIcon, {}),
buttonSize: size,
className: disabled && !enableSubMenu ? `${baseClass}--popup-disabled` : '',
disabled: disabled && !enableSubMenu,
horizontalAlign: "right",
id: `${id}-popup`,
noBackground: true,
render: ({
close
}) => SubMenuPopupContent({
close: () => close()
}),
size: "large",
verticalAlign: "bottom"
})]
});
}
return buttonElement;
};
//# sourceMappingURL=index.js.map