UNPKG

@payfit/unity-components

Version:

165 lines (164 loc) 5.04 kB
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 };