@frontify/fondue
Version:
Design system of Frontify
82 lines (81 loc) • 2.54 kB
JavaScript
import { jsxs as j, jsx as B } from "react/jsx-runtime";
import { useButton as I } from "@react-aria/button";
import { useFocusRing as O } from "@react-aria/focus";
import { forwardRef as V, cloneElement as _ } from "react";
import { buttonTypeMap as k, buttonIconSizeMap as z } from "./mappings.es.js";
import { FOCUS_VISIBLE_STYLE as T } from "../../utilities/focusStyle.es.js";
import { merge as r } from "../../utilities/merge.es.js";
import { useForwardedRef as U } from "../../utilities/useForwardedRef.es.js";
import { ButtonStyleClasses as W, ButtonDisabledClasses as Y, ButtonCommonClasses as q, ButtonRoundingClasses as v, ButtonSizeClasses as d, IconSpacingClasses as A } from "./ButtonClasses.es.js";
import { ButtonStyle as o, ButtonEmphasis as u, ButtonType as G, ButtonRounding as H, ButtonSize as J } from "./ButtonTypes.es.js";
const K = ({
type: S = G.Button,
title: b = "",
style: t = o.Default,
size: s = J.Medium,
rounding: y = H.Medium,
emphasis: n = u.Strong,
hideLabel: i = !1,
disabled: e = !1,
icon: m,
children: a,
onClick: p,
hugWidth: C = !0,
"aria-label": g,
"aria-describedby": w,
formId: D,
solid: x,
inverted: F,
"data-test-id": f = "button"
}, N) => {
t === o.Primary ? (t = o.Default, n = u.Strong) : t === o.Secondary && (t = o.Default, n = u.Default), x === !1 && (n = u.Weak);
const c = U(N), { buttonProps: R } = I(
{ onPress: () => p && p(), isDisabled: e, type: k[S] },
c
), { isFocusVisible: E, focusProps: M } = O(), l = ($) => e ? Y : `${W[n][t][$]}`, P = r([
l("button"),
q,
v[y],
m && !a || i ? d[s].iconOnly : d[s].default,
!C && "tw-w-full"
]);
return /* @__PURE__ */ j(
"button",
{
"data-test-id": f,
"aria-label": g,
"aria-disabled": e,
"aria-describedby": w,
ref: c,
className: r([P, F && "tw-dark", E && T]),
disabled: e,
form: D,
title: b,
...R,
...M,
children: [
m && /* @__PURE__ */ B(
"span",
{
"data-test-id": `${f}-icon`,
className: r([a && !i ? A[s] : "", l("icon")]),
children: _(m, { size: z[s] })
}
),
a && /* @__PURE__ */ B(
"span",
{
"data-test-id": `${f}-text`,
className: r([l("text"), i && "tw-sr-only"]),
children: a
}
)
]
}
);
}, L = V(K);
L.displayName = "FondueButton";
export {
L as Button
};
//# sourceMappingURL=Button.es.js.map