@helpwave/hightide
Version:
helpwave's component and theming library
147 lines (144 loc) • 4.27 kB
JavaScript
// src/components/branding/HelpwaveBadge.tsx
import clsx3 from "clsx";
// src/components/layout-and-navigation/Tile.tsx
import clsx from "clsx";
import { Check } from "lucide-react";
import { jsx, jsxs } from "react/jsx-runtime";
var Tile = ({
title,
titleClassName,
description,
descriptionClassName,
onClick,
isSelected = false,
disabled = false,
prefix,
suffix,
normalClassName = "hover:bg-primary/40 cursor-pointer",
selectedClassName = "bg-primary/20",
disabledClassName = "text-disabled-text bg-disabled-background cursor-not-allowed",
className
}) => {
return /* @__PURE__ */ jsxs(
"div",
{
className: clsx(
"flex-row-2 w-full items-center",
{
[normalClassName]: onClick && !disabled,
[selectedClassName]: isSelected && !disabled,
[disabledClassName]: disabled
},
className
),
onClick: disabled ? void 0 : onClick,
children: [
prefix,
/* @__PURE__ */ jsxs("div", { className: "flex-col-0 w-full", children: [
/* @__PURE__ */ jsx("span", { className: clsx(titleClassName ?? "textstyle-title-normal"), children: title }),
!!description && /* @__PURE__ */ jsx("span", { className: clsx(descriptionClassName ?? "textstyle-description"), children: description })
] }),
suffix ?? (isSelected ? /* @__PURE__ */ jsx(Check, { size: 24 }) : void 0)
]
}
);
};
// src/components/icons-and-geometry/Helpwave.tsx
import { clsx as clsx2 } from "clsx";
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
var Helpwave = ({
color = "currentColor",
animate = "none",
size = 64,
...props
}) => {
const isLoadingAnimation = animate === "loading";
let svgAnimationKey = "";
if (animate === "pulse") {
svgAnimationKey = "animate-pulse";
} else if (animate === "bounce") {
svgAnimationKey = "animate-bounce";
}
if (size < 0) {
console.error("size cannot be less than 0");
size = 64;
}
return /* @__PURE__ */ jsx2(
"svg",
{
width: size,
height: size,
viewBox: "0 0 888 888",
fill: "none",
strokeLinecap: "round",
strokeWidth: 48,
...props,
children: /* @__PURE__ */ jsxs2("g", { className: clsx2(svgAnimationKey), children: [
/* @__PURE__ */ jsx2(
"path",
{
className: clsx2({ "animate-wave-big-left-up": isLoadingAnimation }),
d: "M144 543.235C144 423.259 232.164 326 340.92 326",
stroke: color,
strokeDasharray: "1000"
}
),
/* @__PURE__ */ jsx2(
"path",
{
className: clsx2({ "animate-wave-big-right-down": isLoadingAnimation }),
d: "M537.84 544.104C429.084 544.104 340.92 446.844 340.92 326.869",
stroke: color,
strokeDasharray: "1000"
}
),
/* @__PURE__ */ jsx2(
"path",
{
className: clsx2({ "animate-wave-small-left-up": isLoadingAnimation }),
d: "M462.223 518.035C462.223 432.133 525.348 362.495 603.217 362.495",
stroke: color,
strokeDasharray: "1000"
}
),
/* @__PURE__ */ jsx2(
"path",
{
className: clsx2({ "animate-wave-small-right-down": isLoadingAnimation }),
d: "M745.001 519.773C666.696 519.773 603.218 450.136 603.218 364.233",
stroke: color,
strokeDasharray: "1000"
}
)
] })
}
);
};
// src/components/branding/HelpwaveBadge.tsx
import { jsx as jsx3 } from "react/jsx-runtime";
var HelpwaveBadge = ({
size = "small",
title = "helpwave",
className = ""
}) => {
const iconSize = size === "small" ? 24 : 64;
return /* @__PURE__ */ jsx3(
Tile,
{
prefix: /* @__PURE__ */ jsx3(Helpwave, { size: iconSize }),
title,
titleClassName: size === "small" ? "textstyle-title-lg text-base" : "textstyle-title-xl",
className: clsx3(
{
"px-2 py-1 rounded-md": size === "small",
"px-4 py-1 rounded-md": size === "large"
},
className
)
}
);
};
export {
HelpwaveBadge
};
//# sourceMappingURL=HelpwaveBadge.mjs.map