@payfit/unity-components
Version:
165 lines (164 loc) • 5.04 kB
JavaScript
import { Icon as e } from "../../../../components/icon/Icon.js";
import { Spinner as t } from "../../../../components/spinner/Spinner.js";
import { buttonBase as n } from "../../../../components/button/Button.variants.js";
import { aiGradientEffect as r, aiGradientSurfaceEffect as i } from "../../utils/ai-gradient-effect.js";
import { forwardRef as a, useMemo as o } from "react";
import { uyTv as s } from "@payfit/unity-themes";
import { jsx as c, jsxs as l } from "react/jsx-runtime";
import { useIntl as u } from "react-intl";
import { Button as d } from "react-aria-components/Button";
//#region src/modules/ai-kit/components/ai-button/AIButton.tsx
var f = s({
extend: n,
base: ["uy:relative uy:isolate uy:border-2 uy:border-transparent", "uy:[--uy-ai-gradient-effect-surface-radius:var(--uy-radius-75)] uy:sm:[--uy-ai-gradient-effect-surface-radius:var(--uy-radius-50)]"],
variants: {
variant: {
outlined: [
"uy:text-content-neutral-enabled",
"uy:enabled:data-[hovered=\"true\"]:text-content-neutral-hover",
"uy:enabled:active:text-content-neutral-active",
"uy:enabled:data-[pressed=\"true\"]:text-content-neutral-pressed",
"uy:enabled:data-[focus-visible=\"true\"]:text-content-neutral-focus"
],
ghost: [
"uy:bg-transparent uy:text-content-neutral-enabled",
"uy:enabled:data-[hovered=\"true\"]:text-content-neutral-hover",
"uy:enabled:active:text-content-neutral-active",
"uy:enabled:data-[pressed=\"true\"]:text-content-neutral-pressed",
"uy:enabled:data-[focus-visible=\"true\"]:text-content-neutral-focus"
]
},
isDisabled: { true: [
"uy:disabled:text-content-neutral-disabled",
"uy:disabled:bg-transparent",
"uy:data-[loading]:text-content-neutral-disabled",
"uy:data-[loading]:bg-transparent"
] }
},
compoundVariants: [
{
isDisabled: !1,
variant: "outlined",
className: r({ variant: "outlined" })
},
{
isDisabled: !1,
variant: "ghost",
className: r({ variant: "ghost" })
},
{
isDisabled: !0,
variant: "outlined",
className: "uy:disabled:border-1 uy:disabled:border-border-neutral-high-disabled uy:data-[loading]:border-1 uy:data-[loading]:border-border-neutral-high-disabled"
},
{
isDisabled: !0,
variant: "ghost",
className: "uy:disabled:bg-surface-neutral-disabled uy:data-[loading]:bg-surface-neutral-disabled"
}
],
defaultVariants: { variant: "outlined" }
}), p = s({
base: ["uy:pointer-events-none uy:absolute uy:-inset-px uy:z-10 uy:rounded-[var(--uy-ai-gradient-effect-surface-radius)]", "uy:group-data-[hovered=\"true\"]:inset-0 uy:group-active:inset-0 uy:group-data-[pressed=\"true\"]:inset-0 uy:group-data-[focus-visible=\"true\"]:inset-0"],
variants: {
variant: {
outlined: "uy:bg-surface-neutral",
ghost: "uy:bg-transparent uy:group-data-[focus-visible=\"true\"]:bg-surface-neutral"
},
isDisabled: {
true: "",
false: ""
}
},
compoundVariants: [
{
isDisabled: !1,
variant: "outlined",
className: i()
},
{
isDisabled: !1,
variant: "ghost",
className: i()
},
{
isDisabled: !0,
variant: "outlined",
className: "uy:inset-0 uy:bg-surface-neutral-disabled"
},
{
isDisabled: !0,
variant: "ghost",
className: "uy:bg-surface-neutral-disabled"
}
],
defaultVariants: {
isDisabled: !1,
variant: "outlined"
}
}), m = (n, r, i) => n ? /* @__PURE__ */ c(t, {
size: "small",
color: "inherit",
label: r
}) : i ? /* @__PURE__ */ c(e, {
"aria-hidden": "true",
color: "inherit",
"data-unity-icon": "prefix",
role: "presentation",
size: 20,
src: i
}) : null, h = a(({ children: t, isDisabled: n = !1, isLoading: r = !1, loadingLabel: i, mode: a, prefixIcon: s, suffixIcon: h, truncateLabelLength: g, variant: _, ...v }, y) => {
let b = u(), x = n || r, S = (i?.trim() ? i : void 0) ?? b.formatMessage({
id: "unity:component:common:loading:label",
defaultMessage: "Loading..."
}), C = o(() => f({
isDisabled: x,
isLoading: r,
mode: a === "compact" ? "compact" : "default",
size: "default",
variant: _
}), [
x,
r,
a,
_
]);
return /* @__PURE__ */ l(d, {
...v,
ref: y,
"data-dd-privacy": "allow",
"data-loading": r || void 0,
isDisabled: n,
isPending: r,
className: C,
children: [/* @__PURE__ */ c("span", {
"aria-hidden": "true",
className: p({
isDisabled: x,
variant: _
}),
"data-unity-slot": "surface"
}), /* @__PURE__ */ l("span", {
className: "uy:relative uy:z-20 uy:inline-flex uy:gap-50 uy:items-center",
children: [
m(r, S, s),
g && g > 0 ? /* @__PURE__ */ c("span", {
style: { "--uy-button-label-truncation-length": `${g}ch` },
className: "uy:truncate uy:min-w-0 uy:w-(--uy-button-label-truncation-length)",
children: t
}) : t,
h && /* @__PURE__ */ c(e, {
"aria-hidden": "true",
color: "inherit",
"data-unity-icon": "suffix",
role: "presentation",
size: 20,
src: h
})
]
})]
});
});
h.displayName = "AIButton";
//#endregion
export { h as AIButton, f as aiButton };