@sps-woodland/buttons 8.33.10 → 8.34.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/index.js +86 -85
- package/lib/index.umd.cjs +2 -2
- package/lib/style.css +1 -1
- package/package.json +7 -5
package/lib/index.js
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
import * as
|
1
|
+
import * as d from "react";
|
2
2
|
import Ee, { useRef as ee, useCallback as z, useEffect as J, useState as $e, useMemo as Be, useContext as Me } from "react";
|
3
|
-
import {
|
4
|
-
import { useFocusable as
|
3
|
+
import { Spinner as Fe, cl as Ue, Metadata as He, Icon as Re } from "@sps-woodland/core";
|
4
|
+
import { useFocusable as Ve, FocusRing as Ge } from "@react-aria/focus";
|
5
|
+
import { useWoodlandLanguage as We } from "@spscommerce/i18n";
|
5
6
|
import { code as y } from "@spscommerce/utils";
|
6
7
|
const Pe = typeof document < "u" ? Ee.useLayoutEffect : () => {
|
7
8
|
};
|
@@ -54,11 +55,11 @@ function V(...e) {
|
|
54
55
|
for (let r = 1; r < e.length; r++) {
|
55
56
|
let o = e[r];
|
56
57
|
for (let i in o) {
|
57
|
-
let
|
58
|
-
typeof
|
58
|
+
let c = t[i], u = o[i];
|
59
|
+
typeof c == "function" && typeof u == "function" && // This is a lot faster than a regex.
|
59
60
|
i[0] === "o" && i[1] === "n" && i.charCodeAt(2) >= /* 'A' */
|
60
61
|
65 && i.charCodeAt(2) <= /* 'Z' */
|
61
|
-
90 ? t[i] = xe(
|
62
|
+
90 ? t[i] = xe(c, u) : (i === "className" || i === "UNSAFE_className") && typeof c == "string" && typeof u == "string" ? t[i] = je(c, u) : i === "id" && c && u ? t.id = Ye(c, u) : t[i] = u !== void 0 ? u : c;
|
62
63
|
}
|
63
64
|
}
|
64
65
|
return t;
|
@@ -80,9 +81,9 @@ const Xe = /* @__PURE__ */ new Set([
|
|
80
81
|
"referrerPolicy"
|
81
82
|
]), Je = /^(data-.*)$/;
|
82
83
|
function Qe(e, t = {}) {
|
83
|
-
let { labelable: r, isLink: o, propNames: i } = t,
|
84
|
-
for (const u in e) Object.prototype.hasOwnProperty.call(e, u) && (Xe.has(u) || r && ze.has(u) || o && qe.has(u) || i != null && i.has(u) || Je.test(u)) && (
|
85
|
-
return
|
84
|
+
let { labelable: r, isLink: o, propNames: i } = t, c = {};
|
85
|
+
for (const u in e) Object.prototype.hasOwnProperty.call(e, u) && (Xe.has(u) || r && ze.has(u) || o && qe.has(u) || i != null && i.has(u) || Je.test(u)) && (c[u] = e[u]);
|
86
|
+
return c;
|
86
87
|
}
|
87
88
|
function R(e) {
|
88
89
|
if (Ze()) e.focus({
|
@@ -158,18 +159,18 @@ const Q = I(function() {
|
|
158
159
|
});
|
159
160
|
function G(e, t, r = !0) {
|
160
161
|
var o, i;
|
161
|
-
let { metaKey:
|
162
|
-
st() && (!((i = window.event) === null || i === void 0 || (o = i.type) === null || o === void 0) && o.startsWith("key")) && e.target === "_blank" && (Q() ?
|
162
|
+
let { metaKey: c, ctrlKey: u, altKey: p, shiftKey: m } = t;
|
163
|
+
st() && (!((i = window.event) === null || i === void 0 || (o = i.type) === null || o === void 0) && o.startsWith("key")) && e.target === "_blank" && (Q() ? c = !0 : u = !0);
|
163
164
|
let v = ot() && Q() && !Oe() ? new KeyboardEvent("keydown", {
|
164
165
|
keyIdentifier: "Enter",
|
165
|
-
metaKey:
|
166
|
+
metaKey: c,
|
166
167
|
ctrlKey: u,
|
167
|
-
altKey:
|
168
|
+
altKey: p,
|
168
169
|
shiftKey: m
|
169
170
|
}) : new MouseEvent("click", {
|
170
|
-
metaKey:
|
171
|
+
metaKey: c,
|
171
172
|
ctrlKey: u,
|
172
|
-
altKey:
|
173
|
+
altKey: p,
|
173
174
|
shiftKey: m,
|
174
175
|
bubbles: !0,
|
175
176
|
cancelable: !0
|
@@ -193,7 +194,7 @@ function me() {
|
|
193
194
|
if (!e(o) || !o.target) return;
|
194
195
|
let i = F.get(o.target);
|
195
196
|
if (i && (i.delete(o.propertyName), i.size === 0 && (o.target.removeEventListener("transitioncancel", r), F.delete(o.target)), F.size === 0)) {
|
196
|
-
for (let
|
197
|
+
for (let c of le) c();
|
197
198
|
le.clear();
|
198
199
|
}
|
199
200
|
};
|
@@ -206,23 +207,23 @@ function it(e) {
|
|
206
207
|
});
|
207
208
|
}
|
208
209
|
function at() {
|
209
|
-
let e = ee(/* @__PURE__ */ new Map()), t = z((i,
|
210
|
-
let m =
|
210
|
+
let e = ee(/* @__PURE__ */ new Map()), t = z((i, c, u, p) => {
|
211
|
+
let m = p != null && p.once ? (...v) => {
|
211
212
|
e.current.delete(u), u(...v);
|
212
213
|
} : u;
|
213
214
|
e.current.set(u, {
|
214
|
-
type:
|
215
|
+
type: c,
|
215
216
|
eventTarget: i,
|
216
217
|
fn: m,
|
217
|
-
options:
|
218
|
-
}), i.addEventListener(
|
219
|
-
}, []), r = z((i,
|
218
|
+
options: p
|
219
|
+
}), i.addEventListener(c, u, p);
|
220
|
+
}, []), r = z((i, c, u, p) => {
|
220
221
|
var m;
|
221
222
|
let v = ((m = e.current.get(u)) === null || m === void 0 ? void 0 : m.fn) || u;
|
222
|
-
i.removeEventListener(
|
223
|
+
i.removeEventListener(c, v, p), e.current.delete(u);
|
223
224
|
}, []), o = z(() => {
|
224
|
-
e.current.forEach((i,
|
225
|
-
r(i.eventTarget, i.type,
|
225
|
+
e.current.forEach((i, c) => {
|
226
|
+
r(i.eventTarget, i.type, c, i.options);
|
226
227
|
});
|
227
228
|
}, [
|
228
229
|
r
|
@@ -331,11 +332,11 @@ class X {
|
|
331
332
|
writable: !0,
|
332
333
|
value: void 0
|
333
334
|
}), ge(this, j, !0);
|
334
|
-
var
|
335
|
-
let u = (
|
336
|
-
const
|
335
|
+
var c;
|
336
|
+
let u = (c = i == null ? void 0 : i.target) !== null && c !== void 0 ? c : o.currentTarget;
|
337
|
+
const p = u == null ? void 0 : u.getBoundingClientRect();
|
337
338
|
let m, v = 0, b, E = null;
|
338
|
-
o.clientX != null && o.clientY != null && (b = o.clientX, E = o.clientY),
|
339
|
+
o.clientX != null && o.clientY != null && (b = o.clientX, E = o.clientY), p && (b != null && E != null ? (m = b - p.left, v = E - p.top) : (m = p.width / 2, v = p.height / 2)), this.type = t, this.pointerType = r, this.target = o.currentTarget, this.shiftKey = o.shiftKey, this.metaKey = o.metaKey, this.ctrlKey = o.ctrlKey, this.altKey = o.altKey, this.x = m, this.y = v;
|
339
340
|
}
|
340
341
|
}
|
341
342
|
const ve = Symbol("linkClicked");
|
@@ -345,9 +346,9 @@ function bt(e) {
|
|
345
346
|
onPressChange: r,
|
346
347
|
onPressStart: o,
|
347
348
|
onPressEnd: i,
|
348
|
-
onPressUp:
|
349
|
+
onPressUp: c,
|
349
350
|
isDisabled: u,
|
350
|
-
isPressed:
|
351
|
+
isPressed: p,
|
351
352
|
preventFocusOnPress: m,
|
352
353
|
shouldCancelOnPointerExit: v,
|
353
354
|
allowTextSelectionOnPress: b,
|
@@ -390,10 +391,10 @@ function bt(e) {
|
|
390
391
|
}), N = H((n, f) => {
|
391
392
|
let P = w.current;
|
392
393
|
if (u) return !1;
|
393
|
-
if (
|
394
|
+
if (c) {
|
394
395
|
P.isTriggeringEvent = !0;
|
395
396
|
let l = new X("pressup", f, n);
|
396
|
-
return
|
397
|
+
return c(l), P.isTriggeringEvent = !1, l.shouldStopPropagation;
|
397
398
|
}
|
398
399
|
return !0;
|
399
400
|
}), O = H((n) => {
|
@@ -556,7 +557,7 @@ function bt(e) {
|
|
556
557
|
}, [
|
557
558
|
b
|
558
559
|
]), {
|
559
|
-
isPressed:
|
560
|
+
isPressed: p || _,
|
560
561
|
pressProps: V(x, oe)
|
561
562
|
};
|
562
563
|
}
|
@@ -564,9 +565,9 @@ function de(e) {
|
|
564
565
|
return e.tagName === "A" && e.hasAttribute("href");
|
565
566
|
}
|
566
567
|
function re(e, t) {
|
567
|
-
const { key: r, code: o } = e, i = t,
|
568
|
+
const { key: r, code: o } = e, i = t, c = i.getAttribute("role");
|
568
569
|
return (r === "Enter" || r === " " || r === "Spacebar" || o === "Space") && !(i instanceof ae(i).HTMLInputElement && !Ie(i, r) || i instanceof ae(i).HTMLTextAreaElement || i.isContentEditable) && // Links should only trigger with Enter key
|
569
|
-
!((
|
570
|
+
!((c === "link" || !c && de(i)) && r !== "Enter");
|
570
571
|
}
|
571
572
|
function gt(e) {
|
572
573
|
const { targetTouches: t } = e;
|
@@ -659,7 +660,7 @@ function kt() {
|
|
659
660
|
};
|
660
661
|
}
|
661
662
|
function wt(e) {
|
662
|
-
let { onHoverStart: t, onHoverChange: r, onHoverEnd: o, isDisabled: i } = e, [
|
663
|
+
let { onHoverStart: t, onHoverChange: r, onHoverEnd: o, isDisabled: i } = e, [c, u] = $e(!1), p = ee({
|
663
664
|
isHovered: !1,
|
664
665
|
ignoreEmulatedMouseEvents: !1,
|
665
666
|
pointerType: "",
|
@@ -668,17 +669,17 @@ function wt(e) {
|
|
668
669
|
J(kt, []);
|
669
670
|
let { hoverProps: m, triggerHoverEnd: v } = Be(() => {
|
670
671
|
let b = (_, $) => {
|
671
|
-
if (
|
672
|
-
|
672
|
+
if (p.pointerType = $, i || $ === "touch" || p.isHovered || !_.currentTarget.contains(_.target)) return;
|
673
|
+
p.isHovered = !0;
|
673
674
|
let w = _.currentTarget;
|
674
|
-
|
675
|
+
p.target = w, t && t({
|
675
676
|
type: "hoverstart",
|
676
677
|
target: w,
|
677
678
|
pointerType: $
|
678
679
|
}), r && r(!0), u(!0);
|
679
680
|
}, E = (_, $) => {
|
680
|
-
if (
|
681
|
-
|
681
|
+
if (p.pointerType = "", p.target = null, $ === "touch" || !p.isHovered) return;
|
682
|
+
p.isHovered = !1;
|
682
683
|
let w = _.currentTarget;
|
683
684
|
o && o({
|
684
685
|
type: "hoverend",
|
@@ -691,9 +692,9 @@ function wt(e) {
|
|
691
692
|
}, x.onPointerLeave = (_) => {
|
692
693
|
!i && _.currentTarget.contains(_.target) && E(_, _.pointerType);
|
693
694
|
}) : (x.onTouchStart = () => {
|
694
|
-
|
695
|
+
p.ignoreEmulatedMouseEvents = !0;
|
695
696
|
}, x.onMouseEnter = (_) => {
|
696
|
-
!
|
697
|
+
!p.ignoreEmulatedMouseEvents && !Z && b(_, "mouse"), p.ignoreEmulatedMouseEvents = !1;
|
697
698
|
}, x.onMouseLeave = (_) => {
|
698
699
|
!i && _.currentTarget.contains(_.target) && E(_, "mouse");
|
699
700
|
}), {
|
@@ -705,17 +706,17 @@ function wt(e) {
|
|
705
706
|
r,
|
706
707
|
o,
|
707
708
|
i,
|
708
|
-
|
709
|
+
p
|
709
710
|
]);
|
710
711
|
return J(() => {
|
711
712
|
i && v({
|
712
|
-
currentTarget:
|
713
|
-
},
|
713
|
+
currentTarget: p.target
|
714
|
+
}, p.pointerType);
|
714
715
|
}, [
|
715
716
|
i
|
716
717
|
]), {
|
717
718
|
hoverProps: m,
|
718
|
-
isHovered:
|
719
|
+
isHovered: c
|
719
720
|
};
|
720
721
|
}
|
721
722
|
function Tt(e, t) {
|
@@ -723,9 +724,9 @@ function Tt(e, t) {
|
|
723
724
|
elementType: r = "button",
|
724
725
|
isDisabled: o,
|
725
726
|
onPress: i,
|
726
|
-
onPressStart:
|
727
|
+
onPressStart: c,
|
727
728
|
onPressEnd: u,
|
728
|
-
onPressUp:
|
729
|
+
onPressUp: p,
|
729
730
|
onPressChange: m,
|
730
731
|
preventFocusOnPress: v,
|
731
732
|
allowFocusWhenDisabled: b,
|
@@ -750,15 +751,15 @@ function Tt(e, t) {
|
|
750
751
|
rel: r === "a" ? $ : void 0
|
751
752
|
};
|
752
753
|
let { pressProps: S, isPressed: B } = bt({
|
753
|
-
onPressStart:
|
754
|
+
onPressStart: c,
|
754
755
|
onPressEnd: u,
|
755
756
|
onPressChange: m,
|
756
757
|
onPress: i,
|
757
|
-
onPressUp:
|
758
|
+
onPressUp: p,
|
758
759
|
isDisabled: o,
|
759
760
|
preventFocusOnPress: v,
|
760
761
|
ref: t
|
761
|
-
}), { focusableProps: k } =
|
762
|
+
}), { focusableProps: k } = Ve(e, t);
|
762
763
|
b && (k.tabIndex = o ? -1 : k.tabIndex);
|
763
764
|
let N = V(k, S, Qe(e, {
|
764
765
|
labelable: !0
|
@@ -815,13 +816,13 @@ var $t = (e, t, r) => {
|
|
815
816
|
}, ne = (e) => (t) => {
|
816
817
|
var r = e.defaultClassName, o = Te(Te({}, e.defaultVariants), t);
|
817
818
|
for (var i in o) {
|
818
|
-
var
|
819
|
+
var c, u = (c = o[i]) !== null && c !== void 0 ? c : e.defaultVariants[i];
|
819
820
|
if (u != null) {
|
820
|
-
var
|
821
|
-
typeof
|
821
|
+
var p = u;
|
822
|
+
typeof p == "boolean" && (p = p === !0 ? "true" : "false");
|
822
823
|
var m = (
|
823
824
|
// @ts-expect-error
|
824
|
-
e.variantClassNames[i][
|
825
|
+
e.variantClassNames[i][p]
|
825
826
|
);
|
826
827
|
m && (r += " " + m);
|
827
828
|
}
|
@@ -829,17 +830,17 @@ var $t = (e, t, r) => {
|
|
829
830
|
for (var [v, b] of e.compoundVariants)
|
830
831
|
$t(v, o, e.defaultVariants) && (r += " " + b);
|
831
832
|
return r;
|
832
|
-
}, Bt = ne({ defaultClassName: "pkg_sps-
|
833
|
-
const Le =
|
833
|
+
}, Bt = ne({ defaultClassName: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy0", variantClassNames: { disabled: { true: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy1", false: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy2" }, kind: { default: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy3", link: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy4", confirm: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy5", delete: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy6", key: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy7", icon: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy8" }, spinning: { true: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy9", false: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxya" } }, defaultVariants: { disabled: !1, kind: "default", spinning: !1 }, compoundVariants: [[{ kind: "icon", spinning: !0 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyb"], [{ kind: "default", spinning: !0 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyc"], [{ kind: "confirm", spinning: !0 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyd"], [{ kind: "delete", spinning: !0 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxye"], [{ kind: "key", spinning: !0 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyf"], [{ disabled: !0, spinning: !1 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyg"], [{ kind: "link", disabled: !0 }, "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyh"]] }), Pt = ne({ defaultClassName: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyi", variantClassNames: { disabled: { true: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyj", false: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyk" }, kind: { icon: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyl", default: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxym", delete: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyn", key: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyo", confirm: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyp", link: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyq" }, spinning: { true: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyr", false: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxys" } }, defaultVariants: { disabled: !1, kind: "default", spinning: !1 }, compoundVariants: [] }), xt = ne({ defaultClassName: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyt", variantClassNames: { spinning: { true: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyu", false: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyv" }, kind: { icon: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyw", default: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyx", delete: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyy", key: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyz", confirm: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy10", link: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy11" } }, defaultVariants: { spinning: !1 }, compoundVariants: [] }), St = "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy12", Ot = ne({ defaultClassName: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy13", variantClassNames: { spinning: { true: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy14", false: "pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy15" } }, defaultVariants: { spinning: !1 }, compoundVariants: [] });
|
834
|
+
const Le = d.forwardRef(
|
834
835
|
({
|
835
836
|
as: e,
|
836
837
|
onClick: t,
|
837
838
|
onPress: r,
|
838
839
|
children: o,
|
839
840
|
className: i,
|
840
|
-
isDisabled:
|
841
|
+
isDisabled: c,
|
841
842
|
disabled: u,
|
842
|
-
href:
|
843
|
+
href: p,
|
843
844
|
icon: m,
|
844
845
|
kind: v = "default",
|
845
846
|
spinning: b,
|
@@ -847,23 +848,23 @@ const Le = c.forwardRef(
|
|
847
848
|
title: x,
|
848
849
|
..._
|
849
850
|
}, $) => {
|
850
|
-
const w = e ?? (
|
851
|
+
const w = e ?? (p ? "a" : "button"), T = {
|
851
852
|
onPress: r ?? t,
|
852
853
|
// the button element should be disabled if the button is marked as disabled or spinning
|
853
|
-
isDisabled: u ??
|
854
|
+
isDisabled: u ?? c ?? b,
|
854
855
|
..._
|
855
|
-
}, { "data-testid": S } = _, B =
|
856
|
+
}, { "data-testid": S } = _, B = d.useRef(null), k = $ || B, { buttonProps: N } = Tt(
|
856
857
|
T,
|
857
858
|
k
|
858
859
|
), { hoverProps: O } = wt({ isDisabled: T.isDisabled }), { type: L, ...oe } = N, n = {
|
859
860
|
...V(oe, O),
|
860
861
|
ref: k,
|
861
862
|
title: x,
|
862
|
-
className:
|
863
|
-
...
|
863
|
+
className: p ? xt({ spinning: b, kind: v }) : Pt({ disabled: c || u, kind: v, spinning: b }),
|
864
|
+
...p ? { href: p } : { type: L },
|
864
865
|
..._
|
865
|
-
}, { t: f } =
|
866
|
-
|
866
|
+
}, { t: f } = We(), P = m && /* @__PURE__ */ d.createElement(
|
867
|
+
Re,
|
867
868
|
{
|
868
869
|
className: St,
|
869
870
|
icon: m,
|
@@ -873,32 +874,32 @@ const Le = c.forwardRef(
|
|
873
874
|
);
|
874
875
|
let l;
|
875
876
|
v === "default" || v === "icon" || v === "link" ? l = "dark" : l = "light";
|
876
|
-
const h = b && /* @__PURE__ */
|
877
|
-
|
877
|
+
const h = b && /* @__PURE__ */ d.createElement(
|
878
|
+
Fe,
|
878
879
|
{
|
879
880
|
color: l,
|
880
881
|
className: Ot({ spinning: b }),
|
881
|
-
title: E || f("
|
882
|
+
title: E || f("button.spinningTitle", { defaultValue: "Loading..." }),
|
882
883
|
"data-testid": `${S}__spinner`
|
883
884
|
}
|
884
885
|
);
|
885
|
-
return /* @__PURE__ */
|
886
|
+
return /* @__PURE__ */ d.createElement(Ge, null, /* @__PURE__ */ d.createElement(
|
886
887
|
"div",
|
887
888
|
{
|
888
|
-
className:
|
889
|
+
className: Ue(
|
889
890
|
Bt({
|
890
|
-
disabled:
|
891
|
+
disabled: c || u,
|
891
892
|
kind: v,
|
892
893
|
spinning: b
|
893
894
|
}),
|
894
895
|
i
|
895
896
|
)
|
896
897
|
},
|
897
|
-
/* @__PURE__ */
|
898
|
+
/* @__PURE__ */ d.createElement(w, { ...n }, P, o ? /* @__PURE__ */ d.createElement("span", null, o) : "", h)
|
898
899
|
));
|
899
900
|
}
|
900
901
|
);
|
901
|
-
|
902
|
+
He.set(Le, {
|
902
903
|
name: "Button",
|
903
904
|
props: {
|
904
905
|
disabled: "boolean",
|
@@ -923,11 +924,11 @@ Re.set(Le, {
|
|
923
924
|
});
|
924
925
|
const Nt = {
|
925
926
|
components: [Le],
|
926
|
-
description: () => /* @__PURE__ */
|
927
|
+
description: () => /* @__PURE__ */ d.createElement(d.Fragment, null, /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, "Buttons are used to initiate events or actions. The labels and/or icons describe what the button will do."), /* @__PURE__ */ d.createElement("br", null), /* @__PURE__ */ d.createElement("h5", null, "Variants"), /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, /* @__PURE__ */ d.createElement("span", { className: "sps-text-semibold" }, "Default: "), "For tertiary actions or actions of lower importance on a page."), /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, /* @__PURE__ */ d.createElement("span", { className: "sps-text-semibold" }, "Key: "), "For primary or important actions on a page."), /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, /* @__PURE__ */ d.createElement("span", { className: "sps-text-semibold" }, "Confirm: "), "For the main call to action on a page. There should only be one Confirm button per screen."), /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, /* @__PURE__ */ d.createElement("span", { className: "sps-text-semibold" }, "Delete: "), "For deleting information or another destructive action. These should always be paired with a Delete Confirmation Modal."), /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, /* @__PURE__ */ d.createElement("span", { className: "sps-text-semibold" }, "Disabled: "), "For actions that are not permitted in a particular state. These can be accompanied by a Tooltip on hover describing why it’s disabled."), /* @__PURE__ */ d.createElement("div", { className: "sps-body-14" }, /* @__PURE__ */ d.createElement("span", { className: "sps-text-semibold" }, "With an Icon: "), "For further illustrating the action. Example: Pencil icon in an Edit button. There can also be Icon Buttons without text.")),
|
927
928
|
examples: {
|
928
929
|
basic: {
|
929
930
|
label: "Basic Buttons",
|
930
|
-
description: ({ NavigateTo: e }) => /* @__PURE__ */
|
931
|
+
description: ({ NavigateTo: e }) => /* @__PURE__ */ d.createElement(d.Fragment, null, /* @__PURE__ */ d.createElement("p", null, "The most common type of button that can be used in most cases. Example: Basic Buttons in a ", /* @__PURE__ */ d.createElement(e, { to: "modals" }, "Modal"), ".")),
|
931
932
|
examples: {
|
932
933
|
withoutIcons: {
|
933
934
|
description: "Without Icons",
|
@@ -1210,7 +1211,7 @@ const Nt = {
|
|
1210
1211
|
},
|
1211
1212
|
iconButtons: {
|
1212
1213
|
label: "Icon Buttons",
|
1213
|
-
description: ({ NavigateTo: e, Link: t }) => /* @__PURE__ */
|
1214
|
+
description: ({ NavigateTo: e, Link: t }) => /* @__PURE__ */ d.createElement(d.Fragment, null, /* @__PURE__ */ d.createElement("p", null, "Use these for quick actions that can clearly be articulated by the use of an icon. Example: A Print button in the", " ", /* @__PURE__ */ d.createElement(e, { to: "list-action-bar" }, "List Action Bar"), ". Do not use an icon that doesn't have a universally understood meaning; instead use a Basic Button or a Basic Button with an icon. ", /* @__PURE__ */ d.createElement(t, { to: "/style-and-layout/icons/" }, "View All Icons"))),
|
1214
1215
|
examples: {
|
1215
1216
|
standard: {
|
1216
1217
|
description: "Standard Icon Buttons",
|
@@ -1236,7 +1237,7 @@ const Nt = {
|
|
1236
1237
|
`
|
1237
1238
|
},
|
1238
1239
|
dropdown: {
|
1239
|
-
description: ({ NavigateTo: e }) => /* @__PURE__ */
|
1240
|
+
description: ({ NavigateTo: e }) => /* @__PURE__ */ d.createElement(d.Fragment, null, /* @__PURE__ */ d.createElement("h5", null, "Dropdown Icon Buttons"), /* @__PURE__ */ d.createElement("p", null, "Use these when there are several options available for action. Example: Dropdown Icon Button in a ", /* @__PURE__ */ d.createElement(e, { to: "content-rows" }, "Content Row"), ".")),
|
1240
1241
|
react: y`
|
1241
1242
|
import { SpsDropdown } from "@spscommerce/ds-react";
|
1242
1243
|
|
@@ -1271,7 +1272,7 @@ const Nt = {
|
|
1271
1272
|
},
|
1272
1273
|
textButtons: {
|
1273
1274
|
label: "Text Buttons",
|
1274
|
-
description: ({ NavigateTo: e }) => /* @__PURE__ */
|
1275
|
+
description: ({ NavigateTo: e }) => /* @__PURE__ */ d.createElement("p", null, "Use for less important actions, or ones that aren't taken as frequently. They should not appear inline with other copy. Example: Advanced Search button in the", " ", /* @__PURE__ */ d.createElement(e, { to: "list-toolbar" }, "List Toolbar")),
|
1275
1276
|
examples: {
|
1276
1277
|
withoutIcons: {
|
1277
1278
|
description: "Without Icons",
|
@@ -1325,7 +1326,7 @@ const Nt = {
|
|
1325
1326
|
},
|
1326
1327
|
submitButtons: {
|
1327
1328
|
label: "Submit Buttons",
|
1328
|
-
description: ({ NavigateTo: e }) => /* @__PURE__ */
|
1329
|
+
description: ({ NavigateTo: e }) => /* @__PURE__ */ d.createElement("p", null, "Use to submit a form. There can be a number of visual variations, for example a", " ", /* @__PURE__ */ d.createElement(e, { to: "modals" }, "Modal"), " uses Basic Button (Key) as its Submit Button."),
|
1329
1330
|
examples: {
|
1330
1331
|
basic: {
|
1331
1332
|
react: y`
|
@@ -1374,7 +1375,7 @@ const Nt = {
|
|
1374
1375
|
},
|
1375
1376
|
buttonGroups: {
|
1376
1377
|
label: "Button Groups",
|
1377
|
-
description: ({ NavigateTo: e }) => /* @__PURE__ */
|
1378
|
+
description: ({ NavigateTo: e }) => /* @__PURE__ */ d.createElement("p", null, "Use button groups when there are a number of actions that can be taken in a view. When there are multiple button types in a group, they are separated using dividers. Example: Button groups in ", /* @__PURE__ */ d.createElement(e, { to: "List Action Bar" }, "List Action Bar"), "."),
|
1378
1379
|
examples: {
|
1379
1380
|
basic: {
|
1380
1381
|
description: "Basic Button Groups",
|
@@ -1493,10 +1494,10 @@ const Nt = {
|
|
1493
1494
|
}
|
1494
1495
|
}
|
1495
1496
|
}
|
1496
|
-
},
|
1497
|
+
}, Lt = {
|
1497
1498
|
Buttons: Nt
|
1498
1499
|
};
|
1499
1500
|
export {
|
1500
1501
|
Le as Button,
|
1501
|
-
|
1502
|
+
Lt as MANIFEST
|
1502
1503
|
};
|
package/lib/index.umd.cjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(function(O,v){typeof exports=="object"&&typeof module<"u"?v(exports,require("react"),require("@sps-woodland/core"),require("@react-aria/focus"),require("@spscommerce/utils")):typeof define=="function"&&define.amd?define(["exports","react","@sps-woodland/core","@react-aria/focus","@spscommerce/utils"],v):(O=typeof globalThis<"u"?globalThis:O||self,v(O.Buttons={},O.React,O.core,O.focus,O.utils))})(this,function(O,v,G,me,k){"use strict";function Ie(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const c=Ie(v),_e=typeof document<"u"?v.useLayoutEffect:()=>{};function W(e){const t=v.useRef(null);return _e(()=>{t.current=e},[e]),v.useCallback((...r)=>{const o=t.current;return o==null?void 0:o(...r)},[])}let be=new Map;function Le(e,t){if(e===t)return e;let r=be.get(e);if(r)return r.forEach(i=>i(t)),t;let o=be.get(t);return o?(o.forEach(i=>i(e)),e):t}function ge(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}const I=e=>{var t;return(t=e==null?void 0:e.ownerDocument)!==null&&t!==void 0?t:document},oe=e=>e&&"window"in e&&e.window===e?e:I(e).defaultView||window;function ve(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=ve(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Me(){for(var e,t,r=0,o="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=ve(e))&&(o&&(o+=" "),o+=t);return o}function j(...e){let t={...e[0]};for(let r=1;r<e.length;r++){let o=e[r];for(let i in o){let d=t[i],u=o[i];typeof d=="function"&&typeof u=="function"&&i[0]==="o"&&i[1]==="n"&&i.charCodeAt(2)>=65&&i.charCodeAt(2)<=90?t[i]=ge(d,u):(i==="className"||i==="UNSAFE_className")&&typeof d=="string"&&typeof u=="string"?t[i]=Me(d,u):i==="id"&&d&&u?t.id=Le(d,u):t[i]=u!==void 0?u:d}}return t}const Fe=new Set(["id"]),Ue=new Set(["aria-label","aria-labelledby","aria-describedby","aria-details"]),He=new Set(["href","hrefLang","target","rel","download","ping","referrerPolicy"]),Ve=/^(data-.*)$/;function Ge(e,t={}){let{labelable:r,isLink:o,propNames:i}=t,d={};for(const u in e)Object.prototype.hasOwnProperty.call(e,u)&&(Fe.has(u)||r&&Ue.has(u)||o&&He.has(u)||i!=null&&i.has(u)||Ve.test(u))&&(d[u]=e[u]);return d}function Y(e){if(We())e.focus({preventScroll:!0});else{let t=je(e);e.focus(),Ye(t)}}let X=null;function We(){if(X==null){X=!1;try{document.createElement("div").focus({get preventScroll(){return X=!0,!0}})}catch{}}return X}function je(e){let t=e.parentNode,r=[],o=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==o;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&r.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return o instanceof HTMLElement&&r.push({element:o,scrollTop:o.scrollTop,scrollLeft:o.scrollLeft}),r}function Ye(e){for(let{element:t,scrollTop:r,scrollLeft:o}of e)t.scrollTop=r,t.scrollLeft=o}function q(e){var t;return typeof window>"u"||window.navigator==null?!1:((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.brands.some(r=>e.test(r.brand)))||e.test(window.navigator.userAgent)}function re(e){var t;return typeof window<"u"&&window.navigator!=null?e.test(((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.platform)||window.navigator.platform):!1}function L(e){let t=null;return()=>(t==null&&(t=e()),t)}const z=L(function(){return re(/^Mac/i)}),Re=L(function(){return re(/^iPhone/i)}),he=L(function(){return re(/^iPad/i)||z()&&navigator.maxTouchPoints>1}),ye=L(function(){return Re()||he()}),Xe=L(function(){return q(/AppleWebKit/i)&&!qe()}),qe=L(function(){return q(/Chrome/i)}),ke=L(function(){return q(/Android/i)}),ze=L(function(){return q(/Firefox/i)});function R(e,t,r=!0){var o,i;let{metaKey:d,ctrlKey:u,altKey:p,shiftKey:m}=t;ze()&&(!((i=window.event)===null||i===void 0||(o=i.type)===null||o===void 0)&&o.startsWith("key"))&&e.target==="_blank"&&(z()?d=!0:u=!0);let h=Xe()&&z()&&!he()?new KeyboardEvent("keydown",{keyIdentifier:"Enter",metaKey:d,ctrlKey:u,altKey:p,shiftKey:m}):new MouseEvent("click",{metaKey:d,ctrlKey:u,altKey:p,shiftKey:m,bubbles:!0,cancelable:!0});R.isOpening=r,Y(e),e.dispatchEvent(h),R.isOpening=!1}R.isOpening=!1;let F=new Map,se=new Set;function we(){if(typeof window>"u")return;function e(o){return"propertyName"in o}let t=o=>{if(!e(o)||!o.target)return;let i=F.get(o.target);i||(i=new Set,F.set(o.target,i),o.target.addEventListener("transitioncancel",r,{once:!0})),i.add(o.propertyName)},r=o=>{if(!e(o)||!o.target)return;let i=F.get(o.target);if(i&&(i.delete(o.propertyName),i.size===0&&(o.target.removeEventListener("transitioncancel",r),F.delete(o.target)),F.size===0)){for(let d of se)d();se.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",r)}typeof document<"u"&&(document.readyState!=="loading"?we():document.addEventListener("DOMContentLoaded",we));function Je(e){requestAnimationFrame(()=>{F.size===0?e():se.add(e)})}function Qe(){let e=v.useRef(new Map),t=v.useCallback((i,d,u,p)=>{let m=p!=null&&p.once?(...h)=>{e.current.delete(u),u(...h)}:u;e.current.set(u,{type:d,eventTarget:i,fn:m,options:p}),i.addEventListener(d,u,p)},[]),r=v.useCallback((i,d,u,p)=>{var m;let h=((m=e.current.get(u))===null||m===void 0?void 0:m.fn)||u;i.removeEventListener(d,h,p),e.current.delete(u)},[]),o=v.useCallback(()=>{e.current.forEach((i,d)=>{r(i.eventTarget,i.type,d,i.options)})},[r]);return v.useEffect(()=>o,[o]),{addGlobalListener:t,removeGlobalListener:r,removeAllGlobalListeners:o}}function Ze(e,t){_e(()=>{if(e&&e.ref&&t)return e.ref.current=t.current,()=>{e.ref&&(e.ref.current=null)}})}function Te(e){return e.mozInputSource===0&&e.isTrusted?!0:ke()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function et(e){return!ke()&&e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"}let U="default",ie="",J=new WeakMap;function Ee(e){if(ye()){if(U==="default"){const t=I(e);ie=t.documentElement.style.webkitUserSelect,t.documentElement.style.webkitUserSelect="none"}U="disabled"}else(e instanceof HTMLElement||e instanceof SVGElement)&&(J.set(e,e.style.userSelect),e.style.userSelect="none")}function Q(e){if(ye()){if(U!=="disabled")return;U="restoring",setTimeout(()=>{Je(()=>{if(U==="restoring"){const t=I(e);t.documentElement.style.webkitUserSelect==="none"&&(t.documentElement.style.webkitUserSelect=ie||""),ie="",U="default"}})},300)}else if((e instanceof HTMLElement||e instanceof SVGElement)&&e&&J.has(e)){let t=J.get(e);e.style.userSelect==="none"&&(e.style.userSelect=t),e.getAttribute("style")===""&&e.removeAttribute("style"),J.delete(e)}}const Be=v.createContext({register:()=>{}});Be.displayName="PressResponderContext";function tt(e,t){return t.get?t.get.call(e):t.value}function $e(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function nt(e,t){var r=$e(e,t,"get");return tt(e,r)}function ot(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function rt(e,t,r){ot(e,t),t.set(e,r)}function st(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function Pe(e,t,r){var o=$e(e,t,"set");return st(e,o,r),r}function it(e){let t=v.useContext(Be);if(t){let{register:r,...o}=t;e=j(o,e),r()}return Ze(t,e.ref),e}var Z=new WeakMap;class ee{continuePropagation(){Pe(this,Z,!1)}get shouldStopPropagation(){return nt(this,Z)}constructor(t,r,o,i){rt(this,Z,{writable:!0,value:void 0}),Pe(this,Z,!0);var d;let u=(d=i==null?void 0:i.target)!==null&&d!==void 0?d:o.currentTarget;const p=u==null?void 0:u.getBoundingClientRect();let m,h=0,b,B=null;o.clientX!=null&&o.clientY!=null&&(b=o.clientX,B=o.clientY),p&&(b!=null&&B!=null?(m=b-p.left,h=B-p.top):(m=p.width/2,h=p.height/2)),this.type=t,this.pointerType=r,this.target=o.currentTarget,this.shiftKey=o.shiftKey,this.metaKey=o.metaKey,this.ctrlKey=o.ctrlKey,this.altKey=o.altKey,this.x=m,this.y=h}}const xe=Symbol("linkClicked");function at(e){let{onPress:t,onPressChange:r,onPressStart:o,onPressEnd:i,onPressUp:d,isDisabled:u,isPressed:p,preventFocusOnPress:m,shouldCancelOnPointerExit:h,allowTextSelectionOnPress:b,ref:B,...S}=it(e),[_,$]=v.useState(!1),T=v.useRef({isPressed:!1,ignoreEmulatedMouseEvents:!1,ignoreClickAfterPress:!1,didFirePressStart:!1,isTriggeringEvent:!1,activePointerId:null,target:null,isOverTarget:!1,pointerType:null}),{addGlobalListener:E,removeAllGlobalListeners:N}=Qe(),P=W((n,f)=>{let x=T.current;if(u||x.didFirePressStart)return!1;let l=!0;if(x.isTriggeringEvent=!0,o){let y=new ee("pressstart",f,n);o(y),l=y.shouldStopPropagation}return r&&r(!0),x.isTriggeringEvent=!1,x.didFirePressStart=!0,$(!0),l}),w=W((n,f,x=!0)=>{let l=T.current;if(!l.didFirePressStart)return!1;l.ignoreClickAfterPress=!0,l.didFirePressStart=!1,l.isTriggeringEvent=!0;let y=!0;if(i){let s=new ee("pressend",f,n);i(s),y=s.shouldStopPropagation}if(r&&r(!1),$(!1),t&&x&&!u){let s=new ee("press",f,n);t(s),y&&(y=s.shouldStopPropagation)}return l.isTriggeringEvent=!1,y}),C=W((n,f)=>{let x=T.current;if(u)return!1;if(d){x.isTriggeringEvent=!0;let l=new ee("pressup",f,n);return d(l),x.isTriggeringEvent=!1,l.shouldStopPropagation}return!0}),D=W(n=>{let f=T.current;f.isPressed&&f.target&&(f.isOverTarget&&f.pointerType!=null&&w(A(f.target,n),f.pointerType,!1),f.isPressed=!1,f.isOverTarget=!1,f.activePointerId=null,f.pointerType=null,N(),b||Q(f.target))}),V=W(n=>{h&&D(n)}),fe=v.useMemo(()=>{let n=T.current,f={onKeyDown(l){if(le(l.nativeEvent,l.currentTarget)&&l.currentTarget.contains(l.target)){var y;Ne(l.target,l.key)&&l.preventDefault();let s=!0;if(!n.isPressed&&!l.repeat){n.target=l.currentTarget,n.isPressed=!0,s=P(l,"keyboard");let g=l.currentTarget,a=K=>{le(K,g)&&!K.repeat&&g.contains(K.target)&&n.target&&C(A(n.target,K),"keyboard")};E(I(l.currentTarget),"keyup",ge(a,x),!0)}s&&l.stopPropagation(),l.metaKey&&z()&&((y=n.metaKeyEvents)===null||y===void 0||y.set(l.key,l.nativeEvent))}else l.key==="Meta"&&(n.metaKeyEvents=new Map)},onClick(l){if(!(l&&!l.currentTarget.contains(l.target))&&l&&l.button===0&&!n.isTriggeringEvent&&!R.isOpening){let y=!0;if(u&&l.preventDefault(),!n.ignoreClickAfterPress&&!n.ignoreEmulatedMouseEvents&&!n.isPressed&&(n.pointerType==="virtual"||Te(l.nativeEvent))){!u&&!m&&Y(l.currentTarget);let s=P(l,"virtual"),g=C(l,"virtual"),a=w(l,"virtual");y=s&&g&&a}n.ignoreEmulatedMouseEvents=!1,n.ignoreClickAfterPress=!1,y&&l.stopPropagation()}}},x=l=>{var y;if(n.isPressed&&n.target&&le(l,n.target)){var s;Ne(l.target,l.key)&&l.preventDefault();let a=l.target;w(A(n.target,l),"keyboard",n.target.contains(a)),N(),l.key!=="Enter"&&ae(n.target)&&n.target.contains(a)&&!l[xe]&&(l[xe]=!0,R(n.target,l,!1)),n.isPressed=!1,(s=n.metaKeyEvents)===null||s===void 0||s.delete(l.key)}else if(l.key==="Meta"&&(!((y=n.metaKeyEvents)===null||y===void 0)&&y.size)){var g;let a=n.metaKeyEvents;n.metaKeyEvents=void 0;for(let K of a.values())(g=n.target)===null||g===void 0||g.dispatchEvent(new KeyboardEvent("keyup",K))}};if(typeof PointerEvent<"u"){f.onPointerDown=a=>{if(a.button!==0||!a.currentTarget.contains(a.target))return;if(et(a.nativeEvent)){n.pointerType="virtual";return}ue(a.currentTarget)&&a.preventDefault(),n.pointerType=a.pointerType;let K=!0;n.isPressed||(n.isPressed=!0,n.isOverTarget=!0,n.activePointerId=a.pointerId,n.target=a.currentTarget,!u&&!m&&Y(a.currentTarget),b||Ee(n.target),K=P(a,n.pointerType),E(I(a.currentTarget),"pointermove",l,!1),E(I(a.currentTarget),"pointerup",y,!1),E(I(a.currentTarget),"pointercancel",g,!1)),K&&a.stopPropagation()},f.onMouseDown=a=>{a.currentTarget.contains(a.target)&&a.button===0&&(ue(a.currentTarget)&&a.preventDefault(),a.stopPropagation())},f.onPointerUp=a=>{!a.currentTarget.contains(a.target)||n.pointerType==="virtual"||a.button===0&&H(a,a.currentTarget)&&C(a,n.pointerType||a.pointerType)};let l=a=>{a.pointerId===n.activePointerId&&(n.target&&H(a,n.target)?!n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!0,P(A(n.target,a),n.pointerType)):n.target&&n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!1,w(A(n.target,a),n.pointerType,!1),V(a)))},y=a=>{a.pointerId===n.activePointerId&&n.isPressed&&a.button===0&&n.target&&(H(a,n.target)&&n.pointerType!=null?w(A(n.target,a),n.pointerType):n.isOverTarget&&n.pointerType!=null&&w(A(n.target,a),n.pointerType,!1),n.isPressed=!1,n.isOverTarget=!1,n.activePointerId=null,n.pointerType=null,N(),b||Q(n.target),"ontouchend"in n.target&&a.pointerType!=="mouse"&&E(n.target,"touchend",s,{once:!0}))},s=a=>{Oe(a.target)&&a.preventDefault()},g=a=>{D(a)};f.onDragStart=a=>{a.currentTarget.contains(a.target)&&D(a)}}else{f.onMouseDown=s=>{if(s.button!==0||!s.currentTarget.contains(s.target))return;if(ue(s.currentTarget)&&s.preventDefault(),n.ignoreEmulatedMouseEvents){s.stopPropagation();return}n.isPressed=!0,n.isOverTarget=!0,n.target=s.currentTarget,n.pointerType=Te(s.nativeEvent)?"virtual":"mouse",!u&&!m&&Y(s.currentTarget),P(s,n.pointerType)&&s.stopPropagation(),E(I(s.currentTarget),"mouseup",l,!1)},f.onMouseEnter=s=>{if(!s.currentTarget.contains(s.target))return;let g=!0;n.isPressed&&!n.ignoreEmulatedMouseEvents&&n.pointerType!=null&&(n.isOverTarget=!0,g=P(s,n.pointerType)),g&&s.stopPropagation()},f.onMouseLeave=s=>{if(!s.currentTarget.contains(s.target))return;let g=!0;n.isPressed&&!n.ignoreEmulatedMouseEvents&&n.pointerType!=null&&(n.isOverTarget=!1,g=w(s,n.pointerType,!1),V(s)),g&&s.stopPropagation()},f.onMouseUp=s=>{s.currentTarget.contains(s.target)&&!n.ignoreEmulatedMouseEvents&&s.button===0&&C(s,n.pointerType||"mouse")};let l=s=>{if(s.button===0){if(n.isPressed=!1,N(),n.ignoreEmulatedMouseEvents){n.ignoreEmulatedMouseEvents=!1;return}n.target&&H(s,n.target)&&n.pointerType!=null?w(A(n.target,s),n.pointerType):n.target&&n.isOverTarget&&n.pointerType!=null&&w(A(n.target,s),n.pointerType,!1),n.isOverTarget=!1}};f.onTouchStart=s=>{if(!s.currentTarget.contains(s.target))return;let g=lt(s.nativeEvent);if(!g)return;n.activePointerId=g.identifier,n.ignoreEmulatedMouseEvents=!0,n.isOverTarget=!0,n.isPressed=!0,n.target=s.currentTarget,n.pointerType="touch",!u&&!m&&Y(s.currentTarget),b||Ee(n.target),P(M(n.target,s),n.pointerType)&&s.stopPropagation(),E(oe(s.currentTarget),"scroll",y,!0)},f.onTouchMove=s=>{if(!s.currentTarget.contains(s.target))return;if(!n.isPressed){s.stopPropagation();return}let g=Se(s.nativeEvent,n.activePointerId),a=!0;g&&H(g,s.currentTarget)?!n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!0,a=P(M(n.target,s),n.pointerType)):n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!1,a=w(M(n.target,s),n.pointerType,!1),V(M(n.target,s))),a&&s.stopPropagation()},f.onTouchEnd=s=>{if(!s.currentTarget.contains(s.target))return;if(!n.isPressed){s.stopPropagation();return}let g=Se(s.nativeEvent,n.activePointerId),a=!0;g&&H(g,s.currentTarget)&&n.pointerType!=null?(C(M(n.target,s),n.pointerType),a=w(M(n.target,s),n.pointerType)):n.isOverTarget&&n.pointerType!=null&&(a=w(M(n.target,s),n.pointerType,!1)),a&&s.stopPropagation(),n.isPressed=!1,n.activePointerId=null,n.isOverTarget=!1,n.ignoreEmulatedMouseEvents=!0,n.target&&!b&&Q(n.target),N()},f.onTouchCancel=s=>{s.currentTarget.contains(s.target)&&(s.stopPropagation(),n.isPressed&&D(M(n.target,s)))};let y=s=>{n.isPressed&&s.target.contains(n.target)&&D({currentTarget:n.target,shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1})};f.onDragStart=s=>{s.currentTarget.contains(s.target)&&D(s)}}return f},[E,u,m,N,b,D,V,w,P,C]);return v.useEffect(()=>()=>{var n;b||Q((n=T.current.target)!==null&&n!==void 0?n:void 0)},[b]),{isPressed:p||_,pressProps:j(S,fe)}}function ae(e){return e.tagName==="A"&&e.hasAttribute("href")}function le(e,t){const{key:r,code:o}=e,i=t,d=i.getAttribute("role");return(r==="Enter"||r===" "||r==="Spacebar"||o==="Space")&&!(i instanceof oe(i).HTMLInputElement&&!De(i,r)||i instanceof oe(i).HTMLTextAreaElement||i.isContentEditable)&&!((d==="link"||!d&&ae(i))&&r!=="Enter")}function lt(e){const{targetTouches:t}=e;return t.length>0?t[0]:null}function Se(e,t){const r=e.changedTouches;for(let o=0;o<r.length;o++){const i=r[o];if(i.identifier===t)return i}return null}function M(e,t){let r=0,o=0;return t.targetTouches&&t.targetTouches.length===1&&(r=t.targetTouches[0].clientX,o=t.targetTouches[0].clientY),{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:r,clientY:o}}function A(e,t){let r=t.clientX,o=t.clientY;return{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:r,clientY:o}}function ut(e){let t=0,r=0;return e.width!==void 0?t=e.width/2:e.radiusX!==void 0&&(t=e.radiusX),e.height!==void 0?r=e.height/2:e.radiusY!==void 0&&(r=e.radiusY),{top:e.clientY-r,right:e.clientX+t,bottom:e.clientY+r,left:e.clientX-t}}function ct(e,t){return!(e.left>t.right||t.left>e.right||e.top>t.bottom||t.top>e.bottom)}function H(e,t){let r=t.getBoundingClientRect(),o=ut(e);return ct(r,o)}function ue(e){return!(e instanceof HTMLElement)||!e.hasAttribute("draggable")}function Oe(e){return e instanceof HTMLInputElement?!1:e instanceof HTMLButtonElement?e.type!=="submit"&&e.type!=="reset":!ae(e)}function Ne(e,t){return e instanceof HTMLInputElement?!De(e,t):Oe(e)}const dt=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);function De(e,t){return e.type==="checkbox"||e.type==="radio"?t===" ":dt.has(e.type)}let te=!1,ce=0;function de(){te=!0,setTimeout(()=>{te=!1},50)}function Ce(e){e.pointerType==="touch"&&de()}function pt(){if(!(typeof document>"u"))return typeof PointerEvent<"u"?document.addEventListener("pointerup",Ce):document.addEventListener("touchend",de),ce++,()=>{ce--,!(ce>0)&&(typeof PointerEvent<"u"?document.removeEventListener("pointerup",Ce):document.removeEventListener("touchend",de))}}function ft(e){let{onHoverStart:t,onHoverChange:r,onHoverEnd:o,isDisabled:i}=e,[d,u]=v.useState(!1),p=v.useRef({isHovered:!1,ignoreEmulatedMouseEvents:!1,pointerType:"",target:null}).current;v.useEffect(pt,[]);let{hoverProps:m,triggerHoverEnd:h}=v.useMemo(()=>{let b=(_,$)=>{if(p.pointerType=$,i||$==="touch"||p.isHovered||!_.currentTarget.contains(_.target))return;p.isHovered=!0;let T=_.currentTarget;p.target=T,t&&t({type:"hoverstart",target:T,pointerType:$}),r&&r(!0),u(!0)},B=(_,$)=>{if(p.pointerType="",p.target=null,$==="touch"||!p.isHovered)return;p.isHovered=!1;let T=_.currentTarget;o&&o({type:"hoverend",target:T,pointerType:$}),r&&r(!1),u(!1)},S={};return typeof PointerEvent<"u"?(S.onPointerEnter=_=>{te&&_.pointerType==="mouse"||b(_,_.pointerType)},S.onPointerLeave=_=>{!i&&_.currentTarget.contains(_.target)&&B(_,_.pointerType)}):(S.onTouchStart=()=>{p.ignoreEmulatedMouseEvents=!0},S.onMouseEnter=_=>{!p.ignoreEmulatedMouseEvents&&!te&&b(_,"mouse"),p.ignoreEmulatedMouseEvents=!1},S.onMouseLeave=_=>{!i&&_.currentTarget.contains(_.target)&&B(_,"mouse")}),{hoverProps:S,triggerHoverEnd:B}},[t,r,o,i,p]);return v.useEffect(()=>{i&&h({currentTarget:p.target},p.pointerType)},[i]),{hoverProps:m,isHovered:d}}function mt(e,t){let{elementType:r="button",isDisabled:o,onPress:i,onPressStart:d,onPressEnd:u,onPressUp:p,onPressChange:m,preventFocusOnPress:h,allowFocusWhenDisabled:b,onClick:B,href:S,target:_,rel:$,type:T="button"}=e,E;r==="button"?E={type:T,disabled:o}:E={role:"button",tabIndex:o?void 0:0,href:r==="a"&&o?void 0:S,target:r==="a"?_:void 0,type:r==="input"?T:void 0,disabled:r==="input"?o:void 0,"aria-disabled":!o||r==="input"?void 0:o,rel:r==="a"?$:void 0};let{pressProps:N,isPressed:P}=at({onPressStart:d,onPressEnd:u,onPressChange:m,onPress:i,onPressUp:p,isDisabled:o,preventFocusOnPress:h,ref:t}),{focusableProps:w}=me.useFocusable(e,t);b&&(w.tabIndex=o?-1:w.tabIndex);let C=j(w,N,Ge(e,{labelable:!0}));return{isPressed:P,buttonProps:j(E,C,{"aria-haspopup":e["aria-haspopup"],"aria-expanded":e["aria-expanded"],"aria-controls":e["aria-controls"],"aria-pressed":e["aria-pressed"],onClick:D=>{B&&(B(D),console.warn("onClick is deprecated, please use onPress"))}})}}function _t(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ae(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,o)}return r}function Ke(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ae(Object(r),!0).forEach(function(o){_t(e,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ae(Object(r)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(r,o))})}return e}var bt=(e,t,r)=>{for(var o of Object.keys(e)){var i;if(e[o]!==((i=t[o])!==null&&i!==void 0?i:r[o]))return!1}return!0},ne=e=>t=>{var r=e.defaultClassName,o=Ke(Ke({},e.defaultVariants),t);for(var i in o){var d,u=(d=o[i])!==null&&d!==void 0?d:e.defaultVariants[i];if(u!=null){var p=u;typeof p=="boolean"&&(p=p===!0?"true":"false");var m=e.variantClassNames[i][p];m&&(r+=" "+m)}}for(var[h,b]of e.compoundVariants)bt(h,o,e.defaultVariants)&&(r+=" "+b);return r},gt=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy0",variantClassNames:{disabled:{true:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy1",false:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy2"},kind:{default:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy3",link:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy4",confirm:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy5",delete:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy6",key:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy7",icon:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy8"},spinning:{true:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy9",false:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxya"}},defaultVariants:{disabled:!1,kind:"default",spinning:!1},compoundVariants:[[{kind:"icon",spinning:!0},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyb"],[{kind:"default",spinning:!0},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyc"],[{kind:"confirm",spinning:!0},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyd"],[{kind:"delete",spinning:!0},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxye"],[{kind:"key",spinning:!0},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyf"],[{disabled:!0,spinning:!1},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyg"],[{kind:"link",disabled:!0},"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyh"]]}),vt=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyi",variantClassNames:{disabled:{true:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyj",false:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyk"},kind:{icon:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyl",default:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxym",delete:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyn",key:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyo",confirm:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyp",link:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyq"},spinning:{true:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyr",false:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxys"}},defaultVariants:{disabled:!1,kind:"default",spinning:!1},compoundVariants:[]}),ht=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyt",variantClassNames:{spinning:{true:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyu",false:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyv"},kind:{icon:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyw",default:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyx",delete:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyy",key:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxyz",confirm:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy10",link:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy11"}},defaultVariants:{spinning:!1},compoundVariants:[]}),yt="pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy12",kt=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy13",variantClassNames:{spinning:{true:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy14",false:"pkg_sps-woodland_buttons__version_8_33_10__hash_125pcxy15"}},defaultVariants:{spinning:!1},compoundVariants:[]});const pe=c.forwardRef(({as:e,onClick:t,onPress:r,children:o,className:i,isDisabled:d,disabled:u,href:p,icon:m,kind:h="default",spinning:b,spinningTitle:B,title:S,..._},$)=>{const T=e??(p?"a":"button"),E={onPress:r??t,isDisabled:u??d??b,..._},{"data-testid":N}=_,P=c.useRef(null),w=$||P,{buttonProps:C}=mt(E,w),{hoverProps:D}=ft({isDisabled:E.isDisabled}),{type:V,...fe}=C,n={...j(fe,D),ref:w,title:S,className:p?ht({spinning:b,kind:h}):vt({disabled:d||u,kind:h,spinning:b}),...p?{href:p}:{type:V},..._},{t:f}=c.useContext(G.I18nContext),x=m&&c.createElement(G.Icon,{className:yt,icon:m,"aria-hidden":"true","data-testid":`${N}__${m}-icon`});let l;h==="default"||h==="icon"||h==="link"?l="dark":l="light";const y=b&&c.createElement(G.Spinner,{color:l,className:kt({spinning:b}),title:B||f("design-system:button.spinningTitle",{defaultValue:"Loading..."}),"data-testid":`${N}__spinner`});return c.createElement(me.FocusRing,null,c.createElement("div",{className:G.cl(gt({disabled:d||u,kind:h,spinning:b}),i)},c.createElement(T,{...n},x,o?c.createElement("span",null,o):"",y)))});G.Metadata.set(pe,{name:"Button",props:{disabled:"boolean",href:"string",icon:"IconName",kind:{type:'"default" | "link" | "icon" | "confirm" | "delete" | "key"',default:'"default"'},spinning:"boolean",spinningTitle:"string",type:{type:'"button" | "submit"',default:'"button"'},as:"button | a",onClick:"() => void",onPress:"() => void",children:"ReactNode",className:"string",isDisabled:"boolean",style:"CSSProperties"},panellable:!0});const wt={Buttons:{components:[pe],description:()=>c.createElement(c.Fragment,null,c.createElement("div",{className:"sps-body-14"},"Buttons are used to initiate events or actions. The labels and/or icons describe what the button will do."),c.createElement("br",null),c.createElement("h5",null,"Variants"),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Default: "),"For tertiary actions or actions of lower importance on a page."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Key: "),"For primary or important actions on a page."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Confirm: "),"For the main call to action on a page. There should only be one Confirm button per screen."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Delete: "),"For deleting information or another destructive action. These should always be paired with a Delete Confirmation Modal."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Disabled: "),"For actions that are not permitted in a particular state. These can be accompanied by a Tooltip on hover describing why it’s disabled."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"With an Icon: "),"For further illustrating the action. Example: Pencil icon in an Edit button. There can also be Icon Buttons without text.")),examples:{basic:{label:"Basic Buttons",description:({NavigateTo:e})=>c.createElement(c.Fragment,null,c.createElement("p",null,"The most common type of button that can be used in most cases. Example: Basic Buttons in a ",c.createElement(e,{to:"modals"},"Modal"),".")),examples:{withoutIcons:{description:"Without Icons",react:k.code`
|
1
|
+
(function(S,v){typeof exports=="object"&&typeof module<"u"?v(exports,require("react"),require("@sps-woodland/core"),require("@react-aria/focus"),require("@spscommerce/i18n"),require("@spscommerce/utils")):typeof define=="function"&&define.amd?define(["exports","react","@sps-woodland/core","@react-aria/focus","@spscommerce/i18n","@spscommerce/utils"],v):(S=typeof globalThis<"u"?globalThis:S||self,v(S.Buttons={},S.React,S.core,S.focus,S.i18n,S.utils))})(this,function(S,v,R,me,Ie,k){"use strict";function Le(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const o=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,o.get?o:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const c=Le(v),_e=typeof document<"u"?v.useLayoutEffect:()=>{};function G(e){const t=v.useRef(null);return _e(()=>{t.current=e},[e]),v.useCallback((...r)=>{const o=t.current;return o==null?void 0:o(...r)},[])}let be=new Map;function Me(e,t){if(e===t)return e;let r=be.get(e);if(r)return r.forEach(i=>i(t)),t;let o=be.get(t);return o?(o.forEach(i=>i(e)),e):t}function ge(...e){return(...t)=>{for(let r of e)typeof r=="function"&&r(...t)}}const I=e=>{var t;return(t=e==null?void 0:e.ownerDocument)!==null&&t!==void 0?t:document},oe=e=>e&&"window"in e&&e.window===e?e:I(e).defaultView||window;function ve(e){var t,r,o="";if(typeof e=="string"||typeof e=="number")o+=e;else if(typeof e=="object")if(Array.isArray(e)){var i=e.length;for(t=0;t<i;t++)e[t]&&(r=ve(e[t]))&&(o&&(o+=" "),o+=r)}else for(r in e)e[r]&&(o&&(o+=" "),o+=r);return o}function Fe(){for(var e,t,r=0,o="",i=arguments.length;r<i;r++)(e=arguments[r])&&(t=ve(e))&&(o&&(o+=" "),o+=t);return o}function W(...e){let t={...e[0]};for(let r=1;r<e.length;r++){let o=e[r];for(let i in o){let d=t[i],u=o[i];typeof d=="function"&&typeof u=="function"&&i[0]==="o"&&i[1]==="n"&&i.charCodeAt(2)>=65&&i.charCodeAt(2)<=90?t[i]=ge(d,u):(i==="className"||i==="UNSAFE_className")&&typeof d=="string"&&typeof u=="string"?t[i]=Fe(d,u):i==="id"&&d&&u?t.id=Me(d,u):t[i]=u!==void 0?u:d}}return t}const Ue=new Set(["id"]),He=new Set(["aria-label","aria-labelledby","aria-describedby","aria-details"]),Ve=new Set(["href","hrefLang","target","rel","download","ping","referrerPolicy"]),Ge=/^(data-.*)$/;function We(e,t={}){let{labelable:r,isLink:o,propNames:i}=t,d={};for(const u in e)Object.prototype.hasOwnProperty.call(e,u)&&(Ue.has(u)||r&&He.has(u)||o&&Ve.has(u)||i!=null&&i.has(u)||Ge.test(u))&&(d[u]=e[u]);return d}function j(e){if(je())e.focus({preventScroll:!0});else{let t=Ye(e);e.focus(),Re(t)}}let X=null;function je(){if(X==null){X=!1;try{document.createElement("div").focus({get preventScroll(){return X=!0,!0}})}catch{}}return X}function Ye(e){let t=e.parentNode,r=[],o=document.scrollingElement||document.documentElement;for(;t instanceof HTMLElement&&t!==o;)(t.offsetHeight<t.scrollHeight||t.offsetWidth<t.scrollWidth)&&r.push({element:t,scrollTop:t.scrollTop,scrollLeft:t.scrollLeft}),t=t.parentNode;return o instanceof HTMLElement&&r.push({element:o,scrollTop:o.scrollTop,scrollLeft:o.scrollLeft}),r}function Re(e){for(let{element:t,scrollTop:r,scrollLeft:o}of e)t.scrollTop=r,t.scrollLeft=o}function q(e){var t;return typeof window>"u"||window.navigator==null?!1:((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.brands.some(r=>e.test(r.brand)))||e.test(window.navigator.userAgent)}function re(e){var t;return typeof window<"u"&&window.navigator!=null?e.test(((t=window.navigator.userAgentData)===null||t===void 0?void 0:t.platform)||window.navigator.platform):!1}function L(e){let t=null;return()=>(t==null&&(t=e()),t)}const z=L(function(){return re(/^Mac/i)}),Xe=L(function(){return re(/^iPhone/i)}),he=L(function(){return re(/^iPad/i)||z()&&navigator.maxTouchPoints>1}),ye=L(function(){return Xe()||he()}),qe=L(function(){return q(/AppleWebKit/i)&&!ze()}),ze=L(function(){return q(/Chrome/i)}),ke=L(function(){return q(/Android/i)}),Je=L(function(){return q(/Firefox/i)});function Y(e,t,r=!0){var o,i;let{metaKey:d,ctrlKey:u,altKey:p,shiftKey:m}=t;Je()&&(!((i=window.event)===null||i===void 0||(o=i.type)===null||o===void 0)&&o.startsWith("key"))&&e.target==="_blank"&&(z()?d=!0:u=!0);let h=qe()&&z()&&!he()?new KeyboardEvent("keydown",{keyIdentifier:"Enter",metaKey:d,ctrlKey:u,altKey:p,shiftKey:m}):new MouseEvent("click",{metaKey:d,ctrlKey:u,altKey:p,shiftKey:m,bubbles:!0,cancelable:!0});Y.isOpening=r,j(e),e.dispatchEvent(h),Y.isOpening=!1}Y.isOpening=!1;let F=new Map,se=new Set;function we(){if(typeof window>"u")return;function e(o){return"propertyName"in o}let t=o=>{if(!e(o)||!o.target)return;let i=F.get(o.target);i||(i=new Set,F.set(o.target,i),o.target.addEventListener("transitioncancel",r,{once:!0})),i.add(o.propertyName)},r=o=>{if(!e(o)||!o.target)return;let i=F.get(o.target);if(i&&(i.delete(o.propertyName),i.size===0&&(o.target.removeEventListener("transitioncancel",r),F.delete(o.target)),F.size===0)){for(let d of se)d();se.clear()}};document.body.addEventListener("transitionrun",t),document.body.addEventListener("transitionend",r)}typeof document<"u"&&(document.readyState!=="loading"?we():document.addEventListener("DOMContentLoaded",we));function Qe(e){requestAnimationFrame(()=>{F.size===0?e():se.add(e)})}function Ze(){let e=v.useRef(new Map),t=v.useCallback((i,d,u,p)=>{let m=p!=null&&p.once?(...h)=>{e.current.delete(u),u(...h)}:u;e.current.set(u,{type:d,eventTarget:i,fn:m,options:p}),i.addEventListener(d,u,p)},[]),r=v.useCallback((i,d,u,p)=>{var m;let h=((m=e.current.get(u))===null||m===void 0?void 0:m.fn)||u;i.removeEventListener(d,h,p),e.current.delete(u)},[]),o=v.useCallback(()=>{e.current.forEach((i,d)=>{r(i.eventTarget,i.type,d,i.options)})},[r]);return v.useEffect(()=>o,[o]),{addGlobalListener:t,removeGlobalListener:r,removeAllGlobalListeners:o}}function et(e,t){_e(()=>{if(e&&e.ref&&t)return e.ref.current=t.current,()=>{e.ref&&(e.ref.current=null)}})}function Te(e){return e.mozInputSource===0&&e.isTrusted?!0:ke()&&e.pointerType?e.type==="click"&&e.buttons===1:e.detail===0&&!e.pointerType}function tt(e){return!ke()&&e.width===0&&e.height===0||e.width===1&&e.height===1&&e.pressure===0&&e.detail===0&&e.pointerType==="mouse"}let U="default",ie="",J=new WeakMap;function Ee(e){if(ye()){if(U==="default"){const t=I(e);ie=t.documentElement.style.webkitUserSelect,t.documentElement.style.webkitUserSelect="none"}U="disabled"}else(e instanceof HTMLElement||e instanceof SVGElement)&&(J.set(e,e.style.userSelect),e.style.userSelect="none")}function Q(e){if(ye()){if(U!=="disabled")return;U="restoring",setTimeout(()=>{Qe(()=>{if(U==="restoring"){const t=I(e);t.documentElement.style.webkitUserSelect==="none"&&(t.documentElement.style.webkitUserSelect=ie||""),ie="",U="default"}})},300)}else if((e instanceof HTMLElement||e instanceof SVGElement)&&e&&J.has(e)){let t=J.get(e);e.style.userSelect==="none"&&(e.style.userSelect=t),e.getAttribute("style")===""&&e.removeAttribute("style"),J.delete(e)}}const Be=v.createContext({register:()=>{}});Be.displayName="PressResponderContext";function nt(e,t){return t.get?t.get.call(e):t.value}function $e(e,t,r){if(!t.has(e))throw new TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function ot(e,t){var r=$e(e,t,"get");return nt(e,r)}function rt(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")}function st(e,t,r){rt(e,t),t.set(e,r)}function it(e,t,r){if(t.set)t.set.call(e,r);else{if(!t.writable)throw new TypeError("attempted to set read only private field");t.value=r}}function Pe(e,t,r){var o=$e(e,t,"set");return it(e,o,r),r}function at(e){let t=v.useContext(Be);if(t){let{register:r,...o}=t;e=W(o,e),r()}return et(t,e.ref),e}var Z=new WeakMap;class ee{continuePropagation(){Pe(this,Z,!1)}get shouldStopPropagation(){return ot(this,Z)}constructor(t,r,o,i){st(this,Z,{writable:!0,value:void 0}),Pe(this,Z,!0);var d;let u=(d=i==null?void 0:i.target)!==null&&d!==void 0?d:o.currentTarget;const p=u==null?void 0:u.getBoundingClientRect();let m,h=0,b,B=null;o.clientX!=null&&o.clientY!=null&&(b=o.clientX,B=o.clientY),p&&(b!=null&&B!=null?(m=b-p.left,h=B-p.top):(m=p.width/2,h=p.height/2)),this.type=t,this.pointerType=r,this.target=o.currentTarget,this.shiftKey=o.shiftKey,this.metaKey=o.metaKey,this.ctrlKey=o.ctrlKey,this.altKey=o.altKey,this.x=m,this.y=h}}const xe=Symbol("linkClicked");function lt(e){let{onPress:t,onPressChange:r,onPressStart:o,onPressEnd:i,onPressUp:d,isDisabled:u,isPressed:p,preventFocusOnPress:m,shouldCancelOnPointerExit:h,allowTextSelectionOnPress:b,ref:B,...O}=at(e),[_,$]=v.useState(!1),T=v.useRef({isPressed:!1,ignoreEmulatedMouseEvents:!1,ignoreClickAfterPress:!1,didFirePressStart:!1,isTriggeringEvent:!1,activePointerId:null,target:null,isOverTarget:!1,pointerType:null}),{addGlobalListener:E,removeAllGlobalListeners:N}=Ze(),P=G((n,f)=>{let x=T.current;if(u||x.didFirePressStart)return!1;let l=!0;if(x.isTriggeringEvent=!0,o){let y=new ee("pressstart",f,n);o(y),l=y.shouldStopPropagation}return r&&r(!0),x.isTriggeringEvent=!1,x.didFirePressStart=!0,$(!0),l}),w=G((n,f,x=!0)=>{let l=T.current;if(!l.didFirePressStart)return!1;l.ignoreClickAfterPress=!0,l.didFirePressStart=!1,l.isTriggeringEvent=!0;let y=!0;if(i){let s=new ee("pressend",f,n);i(s),y=s.shouldStopPropagation}if(r&&r(!1),$(!1),t&&x&&!u){let s=new ee("press",f,n);t(s),y&&(y=s.shouldStopPropagation)}return l.isTriggeringEvent=!1,y}),C=G((n,f)=>{let x=T.current;if(u)return!1;if(d){x.isTriggeringEvent=!0;let l=new ee("pressup",f,n);return d(l),x.isTriggeringEvent=!1,l.shouldStopPropagation}return!0}),D=G(n=>{let f=T.current;f.isPressed&&f.target&&(f.isOverTarget&&f.pointerType!=null&&w(A(f.target,n),f.pointerType,!1),f.isPressed=!1,f.isOverTarget=!1,f.activePointerId=null,f.pointerType=null,N(),b||Q(f.target))}),V=G(n=>{h&&D(n)}),fe=v.useMemo(()=>{let n=T.current,f={onKeyDown(l){if(le(l.nativeEvent,l.currentTarget)&&l.currentTarget.contains(l.target)){var y;Ne(l.target,l.key)&&l.preventDefault();let s=!0;if(!n.isPressed&&!l.repeat){n.target=l.currentTarget,n.isPressed=!0,s=P(l,"keyboard");let g=l.currentTarget,a=K=>{le(K,g)&&!K.repeat&&g.contains(K.target)&&n.target&&C(A(n.target,K),"keyboard")};E(I(l.currentTarget),"keyup",ge(a,x),!0)}s&&l.stopPropagation(),l.metaKey&&z()&&((y=n.metaKeyEvents)===null||y===void 0||y.set(l.key,l.nativeEvent))}else l.key==="Meta"&&(n.metaKeyEvents=new Map)},onClick(l){if(!(l&&!l.currentTarget.contains(l.target))&&l&&l.button===0&&!n.isTriggeringEvent&&!Y.isOpening){let y=!0;if(u&&l.preventDefault(),!n.ignoreClickAfterPress&&!n.ignoreEmulatedMouseEvents&&!n.isPressed&&(n.pointerType==="virtual"||Te(l.nativeEvent))){!u&&!m&&j(l.currentTarget);let s=P(l,"virtual"),g=C(l,"virtual"),a=w(l,"virtual");y=s&&g&&a}n.ignoreEmulatedMouseEvents=!1,n.ignoreClickAfterPress=!1,y&&l.stopPropagation()}}},x=l=>{var y;if(n.isPressed&&n.target&&le(l,n.target)){var s;Ne(l.target,l.key)&&l.preventDefault();let a=l.target;w(A(n.target,l),"keyboard",n.target.contains(a)),N(),l.key!=="Enter"&&ae(n.target)&&n.target.contains(a)&&!l[xe]&&(l[xe]=!0,Y(n.target,l,!1)),n.isPressed=!1,(s=n.metaKeyEvents)===null||s===void 0||s.delete(l.key)}else if(l.key==="Meta"&&(!((y=n.metaKeyEvents)===null||y===void 0)&&y.size)){var g;let a=n.metaKeyEvents;n.metaKeyEvents=void 0;for(let K of a.values())(g=n.target)===null||g===void 0||g.dispatchEvent(new KeyboardEvent("keyup",K))}};if(typeof PointerEvent<"u"){f.onPointerDown=a=>{if(a.button!==0||!a.currentTarget.contains(a.target))return;if(tt(a.nativeEvent)){n.pointerType="virtual";return}ue(a.currentTarget)&&a.preventDefault(),n.pointerType=a.pointerType;let K=!0;n.isPressed||(n.isPressed=!0,n.isOverTarget=!0,n.activePointerId=a.pointerId,n.target=a.currentTarget,!u&&!m&&j(a.currentTarget),b||Ee(n.target),K=P(a,n.pointerType),E(I(a.currentTarget),"pointermove",l,!1),E(I(a.currentTarget),"pointerup",y,!1),E(I(a.currentTarget),"pointercancel",g,!1)),K&&a.stopPropagation()},f.onMouseDown=a=>{a.currentTarget.contains(a.target)&&a.button===0&&(ue(a.currentTarget)&&a.preventDefault(),a.stopPropagation())},f.onPointerUp=a=>{!a.currentTarget.contains(a.target)||n.pointerType==="virtual"||a.button===0&&H(a,a.currentTarget)&&C(a,n.pointerType||a.pointerType)};let l=a=>{a.pointerId===n.activePointerId&&(n.target&&H(a,n.target)?!n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!0,P(A(n.target,a),n.pointerType)):n.target&&n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!1,w(A(n.target,a),n.pointerType,!1),V(a)))},y=a=>{a.pointerId===n.activePointerId&&n.isPressed&&a.button===0&&n.target&&(H(a,n.target)&&n.pointerType!=null?w(A(n.target,a),n.pointerType):n.isOverTarget&&n.pointerType!=null&&w(A(n.target,a),n.pointerType,!1),n.isPressed=!1,n.isOverTarget=!1,n.activePointerId=null,n.pointerType=null,N(),b||Q(n.target),"ontouchend"in n.target&&a.pointerType!=="mouse"&&E(n.target,"touchend",s,{once:!0}))},s=a=>{Oe(a.target)&&a.preventDefault()},g=a=>{D(a)};f.onDragStart=a=>{a.currentTarget.contains(a.target)&&D(a)}}else{f.onMouseDown=s=>{if(s.button!==0||!s.currentTarget.contains(s.target))return;if(ue(s.currentTarget)&&s.preventDefault(),n.ignoreEmulatedMouseEvents){s.stopPropagation();return}n.isPressed=!0,n.isOverTarget=!0,n.target=s.currentTarget,n.pointerType=Te(s.nativeEvent)?"virtual":"mouse",!u&&!m&&j(s.currentTarget),P(s,n.pointerType)&&s.stopPropagation(),E(I(s.currentTarget),"mouseup",l,!1)},f.onMouseEnter=s=>{if(!s.currentTarget.contains(s.target))return;let g=!0;n.isPressed&&!n.ignoreEmulatedMouseEvents&&n.pointerType!=null&&(n.isOverTarget=!0,g=P(s,n.pointerType)),g&&s.stopPropagation()},f.onMouseLeave=s=>{if(!s.currentTarget.contains(s.target))return;let g=!0;n.isPressed&&!n.ignoreEmulatedMouseEvents&&n.pointerType!=null&&(n.isOverTarget=!1,g=w(s,n.pointerType,!1),V(s)),g&&s.stopPropagation()},f.onMouseUp=s=>{s.currentTarget.contains(s.target)&&!n.ignoreEmulatedMouseEvents&&s.button===0&&C(s,n.pointerType||"mouse")};let l=s=>{if(s.button===0){if(n.isPressed=!1,N(),n.ignoreEmulatedMouseEvents){n.ignoreEmulatedMouseEvents=!1;return}n.target&&H(s,n.target)&&n.pointerType!=null?w(A(n.target,s),n.pointerType):n.target&&n.isOverTarget&&n.pointerType!=null&&w(A(n.target,s),n.pointerType,!1),n.isOverTarget=!1}};f.onTouchStart=s=>{if(!s.currentTarget.contains(s.target))return;let g=ut(s.nativeEvent);if(!g)return;n.activePointerId=g.identifier,n.ignoreEmulatedMouseEvents=!0,n.isOverTarget=!0,n.isPressed=!0,n.target=s.currentTarget,n.pointerType="touch",!u&&!m&&j(s.currentTarget),b||Ee(n.target),P(M(n.target,s),n.pointerType)&&s.stopPropagation(),E(oe(s.currentTarget),"scroll",y,!0)},f.onTouchMove=s=>{if(!s.currentTarget.contains(s.target))return;if(!n.isPressed){s.stopPropagation();return}let g=Se(s.nativeEvent,n.activePointerId),a=!0;g&&H(g,s.currentTarget)?!n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!0,a=P(M(n.target,s),n.pointerType)):n.isOverTarget&&n.pointerType!=null&&(n.isOverTarget=!1,a=w(M(n.target,s),n.pointerType,!1),V(M(n.target,s))),a&&s.stopPropagation()},f.onTouchEnd=s=>{if(!s.currentTarget.contains(s.target))return;if(!n.isPressed){s.stopPropagation();return}let g=Se(s.nativeEvent,n.activePointerId),a=!0;g&&H(g,s.currentTarget)&&n.pointerType!=null?(C(M(n.target,s),n.pointerType),a=w(M(n.target,s),n.pointerType)):n.isOverTarget&&n.pointerType!=null&&(a=w(M(n.target,s),n.pointerType,!1)),a&&s.stopPropagation(),n.isPressed=!1,n.activePointerId=null,n.isOverTarget=!1,n.ignoreEmulatedMouseEvents=!0,n.target&&!b&&Q(n.target),N()},f.onTouchCancel=s=>{s.currentTarget.contains(s.target)&&(s.stopPropagation(),n.isPressed&&D(M(n.target,s)))};let y=s=>{n.isPressed&&s.target.contains(n.target)&&D({currentTarget:n.target,shiftKey:!1,ctrlKey:!1,metaKey:!1,altKey:!1})};f.onDragStart=s=>{s.currentTarget.contains(s.target)&&D(s)}}return f},[E,u,m,N,b,D,V,w,P,C]);return v.useEffect(()=>()=>{var n;b||Q((n=T.current.target)!==null&&n!==void 0?n:void 0)},[b]),{isPressed:p||_,pressProps:W(O,fe)}}function ae(e){return e.tagName==="A"&&e.hasAttribute("href")}function le(e,t){const{key:r,code:o}=e,i=t,d=i.getAttribute("role");return(r==="Enter"||r===" "||r==="Spacebar"||o==="Space")&&!(i instanceof oe(i).HTMLInputElement&&!De(i,r)||i instanceof oe(i).HTMLTextAreaElement||i.isContentEditable)&&!((d==="link"||!d&&ae(i))&&r!=="Enter")}function ut(e){const{targetTouches:t}=e;return t.length>0?t[0]:null}function Se(e,t){const r=e.changedTouches;for(let o=0;o<r.length;o++){const i=r[o];if(i.identifier===t)return i}return null}function M(e,t){let r=0,o=0;return t.targetTouches&&t.targetTouches.length===1&&(r=t.targetTouches[0].clientX,o=t.targetTouches[0].clientY),{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:r,clientY:o}}function A(e,t){let r=t.clientX,o=t.clientY;return{currentTarget:e,shiftKey:t.shiftKey,ctrlKey:t.ctrlKey,metaKey:t.metaKey,altKey:t.altKey,clientX:r,clientY:o}}function ct(e){let t=0,r=0;return e.width!==void 0?t=e.width/2:e.radiusX!==void 0&&(t=e.radiusX),e.height!==void 0?r=e.height/2:e.radiusY!==void 0&&(r=e.radiusY),{top:e.clientY-r,right:e.clientX+t,bottom:e.clientY+r,left:e.clientX-t}}function dt(e,t){return!(e.left>t.right||t.left>e.right||e.top>t.bottom||t.top>e.bottom)}function H(e,t){let r=t.getBoundingClientRect(),o=ct(e);return dt(r,o)}function ue(e){return!(e instanceof HTMLElement)||!e.hasAttribute("draggable")}function Oe(e){return e instanceof HTMLInputElement?!1:e instanceof HTMLButtonElement?e.type!=="submit"&&e.type!=="reset":!ae(e)}function Ne(e,t){return e instanceof HTMLInputElement?!De(e,t):Oe(e)}const pt=new Set(["checkbox","radio","range","color","file","image","button","submit","reset"]);function De(e,t){return e.type==="checkbox"||e.type==="radio"?t===" ":pt.has(e.type)}let te=!1,ce=0;function de(){te=!0,setTimeout(()=>{te=!1},50)}function Ce(e){e.pointerType==="touch"&&de()}function ft(){if(!(typeof document>"u"))return typeof PointerEvent<"u"?document.addEventListener("pointerup",Ce):document.addEventListener("touchend",de),ce++,()=>{ce--,!(ce>0)&&(typeof PointerEvent<"u"?document.removeEventListener("pointerup",Ce):document.removeEventListener("touchend",de))}}function mt(e){let{onHoverStart:t,onHoverChange:r,onHoverEnd:o,isDisabled:i}=e,[d,u]=v.useState(!1),p=v.useRef({isHovered:!1,ignoreEmulatedMouseEvents:!1,pointerType:"",target:null}).current;v.useEffect(ft,[]);let{hoverProps:m,triggerHoverEnd:h}=v.useMemo(()=>{let b=(_,$)=>{if(p.pointerType=$,i||$==="touch"||p.isHovered||!_.currentTarget.contains(_.target))return;p.isHovered=!0;let T=_.currentTarget;p.target=T,t&&t({type:"hoverstart",target:T,pointerType:$}),r&&r(!0),u(!0)},B=(_,$)=>{if(p.pointerType="",p.target=null,$==="touch"||!p.isHovered)return;p.isHovered=!1;let T=_.currentTarget;o&&o({type:"hoverend",target:T,pointerType:$}),r&&r(!1),u(!1)},O={};return typeof PointerEvent<"u"?(O.onPointerEnter=_=>{te&&_.pointerType==="mouse"||b(_,_.pointerType)},O.onPointerLeave=_=>{!i&&_.currentTarget.contains(_.target)&&B(_,_.pointerType)}):(O.onTouchStart=()=>{p.ignoreEmulatedMouseEvents=!0},O.onMouseEnter=_=>{!p.ignoreEmulatedMouseEvents&&!te&&b(_,"mouse"),p.ignoreEmulatedMouseEvents=!1},O.onMouseLeave=_=>{!i&&_.currentTarget.contains(_.target)&&B(_,"mouse")}),{hoverProps:O,triggerHoverEnd:B}},[t,r,o,i,p]);return v.useEffect(()=>{i&&h({currentTarget:p.target},p.pointerType)},[i]),{hoverProps:m,isHovered:d}}function _t(e,t){let{elementType:r="button",isDisabled:o,onPress:i,onPressStart:d,onPressEnd:u,onPressUp:p,onPressChange:m,preventFocusOnPress:h,allowFocusWhenDisabled:b,onClick:B,href:O,target:_,rel:$,type:T="button"}=e,E;r==="button"?E={type:T,disabled:o}:E={role:"button",tabIndex:o?void 0:0,href:r==="a"&&o?void 0:O,target:r==="a"?_:void 0,type:r==="input"?T:void 0,disabled:r==="input"?o:void 0,"aria-disabled":!o||r==="input"?void 0:o,rel:r==="a"?$:void 0};let{pressProps:N,isPressed:P}=lt({onPressStart:d,onPressEnd:u,onPressChange:m,onPress:i,onPressUp:p,isDisabled:o,preventFocusOnPress:h,ref:t}),{focusableProps:w}=me.useFocusable(e,t);b&&(w.tabIndex=o?-1:w.tabIndex);let C=W(w,N,We(e,{labelable:!0}));return{isPressed:P,buttonProps:W(E,C,{"aria-haspopup":e["aria-haspopup"],"aria-expanded":e["aria-expanded"],"aria-controls":e["aria-controls"],"aria-pressed":e["aria-pressed"],onClick:D=>{B&&(B(D),console.warn("onClick is deprecated, please use onPress"))}})}}function bt(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ae(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(i){return Object.getOwnPropertyDescriptor(e,i).enumerable})),r.push.apply(r,o)}return r}function Ke(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?Ae(Object(r),!0).forEach(function(o){bt(e,o,r[o])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):Ae(Object(r)).forEach(function(o){Object.defineProperty(e,o,Object.getOwnPropertyDescriptor(r,o))})}return e}var gt=(e,t,r)=>{for(var o of Object.keys(e)){var i;if(e[o]!==((i=t[o])!==null&&i!==void 0?i:r[o]))return!1}return!0},ne=e=>t=>{var r=e.defaultClassName,o=Ke(Ke({},e.defaultVariants),t);for(var i in o){var d,u=(d=o[i])!==null&&d!==void 0?d:e.defaultVariants[i];if(u!=null){var p=u;typeof p=="boolean"&&(p=p===!0?"true":"false");var m=e.variantClassNames[i][p];m&&(r+=" "+m)}}for(var[h,b]of e.compoundVariants)gt(h,o,e.defaultVariants)&&(r+=" "+b);return r},vt=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy0",variantClassNames:{disabled:{true:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy1",false:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy2"},kind:{default:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy3",link:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy4",confirm:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy5",delete:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy6",key:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy7",icon:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy8"},spinning:{true:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy9",false:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxya"}},defaultVariants:{disabled:!1,kind:"default",spinning:!1},compoundVariants:[[{kind:"icon",spinning:!0},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyb"],[{kind:"default",spinning:!0},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyc"],[{kind:"confirm",spinning:!0},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyd"],[{kind:"delete",spinning:!0},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxye"],[{kind:"key",spinning:!0},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyf"],[{disabled:!0,spinning:!1},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyg"],[{kind:"link",disabled:!0},"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyh"]]}),ht=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyi",variantClassNames:{disabled:{true:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyj",false:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyk"},kind:{icon:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyl",default:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxym",delete:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyn",key:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyo",confirm:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyp",link:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyq"},spinning:{true:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyr",false:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxys"}},defaultVariants:{disabled:!1,kind:"default",spinning:!1},compoundVariants:[]}),yt=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyt",variantClassNames:{spinning:{true:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyu",false:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyv"},kind:{icon:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyw",default:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyx",delete:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyy",key:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyz",confirm:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy10",link:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy11"}},defaultVariants:{spinning:!1},compoundVariants:[]}),kt="pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy12",wt=ne({defaultClassName:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy13",variantClassNames:{spinning:{true:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy14",false:"pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy15"}},defaultVariants:{spinning:!1},compoundVariants:[]});const pe=c.forwardRef(({as:e,onClick:t,onPress:r,children:o,className:i,isDisabled:d,disabled:u,href:p,icon:m,kind:h="default",spinning:b,spinningTitle:B,title:O,..._},$)=>{const T=e??(p?"a":"button"),E={onPress:r??t,isDisabled:u??d??b,..._},{"data-testid":N}=_,P=c.useRef(null),w=$||P,{buttonProps:C}=_t(E,w),{hoverProps:D}=mt({isDisabled:E.isDisabled}),{type:V,...fe}=C,n={...W(fe,D),ref:w,title:O,className:p?yt({spinning:b,kind:h}):ht({disabled:d||u,kind:h,spinning:b}),...p?{href:p}:{type:V},..._},{t:f}=Ie.useWoodlandLanguage(),x=m&&c.createElement(R.Icon,{className:kt,icon:m,"aria-hidden":"true","data-testid":`${N}__${m}-icon`});let l;h==="default"||h==="icon"||h==="link"?l="dark":l="light";const y=b&&c.createElement(R.Spinner,{color:l,className:wt({spinning:b}),title:B||f("button.spinningTitle",{defaultValue:"Loading..."}),"data-testid":`${N}__spinner`});return c.createElement(me.FocusRing,null,c.createElement("div",{className:R.cl(vt({disabled:d||u,kind:h,spinning:b}),i)},c.createElement(T,{...n},x,o?c.createElement("span",null,o):"",y)))});R.Metadata.set(pe,{name:"Button",props:{disabled:"boolean",href:"string",icon:"IconName",kind:{type:'"default" | "link" | "icon" | "confirm" | "delete" | "key"',default:'"default"'},spinning:"boolean",spinningTitle:"string",type:{type:'"button" | "submit"',default:'"button"'},as:"button | a",onClick:"() => void",onPress:"() => void",children:"ReactNode",className:"string",isDisabled:"boolean",style:"CSSProperties"},panellable:!0});const Tt={Buttons:{components:[pe],description:()=>c.createElement(c.Fragment,null,c.createElement("div",{className:"sps-body-14"},"Buttons are used to initiate events or actions. The labels and/or icons describe what the button will do."),c.createElement("br",null),c.createElement("h5",null,"Variants"),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Default: "),"For tertiary actions or actions of lower importance on a page."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Key: "),"For primary or important actions on a page."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Confirm: "),"For the main call to action on a page. There should only be one Confirm button per screen."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Delete: "),"For deleting information or another destructive action. These should always be paired with a Delete Confirmation Modal."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"Disabled: "),"For actions that are not permitted in a particular state. These can be accompanied by a Tooltip on hover describing why it’s disabled."),c.createElement("div",{className:"sps-body-14"},c.createElement("span",{className:"sps-text-semibold"},"With an Icon: "),"For further illustrating the action. Example: Pencil icon in an Edit button. There can also be Icon Buttons without text.")),examples:{basic:{label:"Basic Buttons",description:({NavigateTo:e})=>c.createElement(c.Fragment,null,c.createElement("p",null,"The most common type of button that can be used in most cases. Example: Basic Buttons in a ",c.createElement(e,{to:"modals"},"Modal"),".")),examples:{withoutIcons:{description:"Without Icons",react:k.code`
|
2
2
|
import { Button } from "@sps-woodland/buttons";
|
3
3
|
import { sprinkles } from "@sps-woodland/tokens";
|
4
4
|
|
@@ -431,4 +431,4 @@
|
|
431
431
|
</>
|
432
432
|
)
|
433
433
|
}
|
434
|
-
`}}}}}};
|
434
|
+
`}}}}}};S.Button=pe,S.MANIFEST=Tt,Object.defineProperty(S,Symbol.toStringTag,{value:"Module"})});
|
package/lib/style.css
CHANGED
@@ -1 +1 @@
|
|
1
|
-
.pkg_sps-
|
1
|
+
.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy0{border-width:.0625rem;border-style:solid;border-radius:.25rem;cursor:pointer;display:inline-block;font-size:.75rem;font-weight:600;line-height:.875rem;padding:0;position:relative}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy3{background:#e9e9ea;border-color:#d2d4d4;color:#4b5356}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy3:hover{background:#d2d4d4}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy4{background:none transparent;border:0;color:#007db8}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy4:hover{background:none transparent;color:#09638d;text-decoration:none}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy5{background:#007db8;border-color:#09638d;color:#fff}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy5:hover{background:#09638d}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy6{background:#de002e;border-color:#a30d2d;color:#fff}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy6:hover{background:#a30d2d}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy7{background:#4b5356;border-color:#1f282c;color:#fff}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy7:hover{background:#1f282c}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy8{background:transparent;border-color:transparent;color:#4b5356}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy8:hover{background-color:#d2d4d4;border-color:#d2d4d4}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy9{color:transparent!important;cursor:not-allowed}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyb{background:#e9e9ea;border-color:#d2d4d4}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyb:hover,.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyc:hover{background:#e9e9ea}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyd:hover{background:#007db8}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxye:hover{background:#de002e}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyf:hover{background:#4b5356}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyg{background:#fff!important;border-color:#d2d4d4!important;color:#717779!important;cursor:not-allowed}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyg:hover{background:#fff}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyh{background:none transparent!important}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyi{background:none transparent;border:0 none;color:inherit;display:block;font-size:inherit;font-weight:inherit;margin:0;text-decoration:none;padding:.5rem 1rem}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyi:hover{text-decoration:none}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyj{cursor:not-allowed!important}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyl{padding:.25rem .5rem}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyq{padding-top:.5rem;padding-bottom:.5rem;padding-right:0;padding-left:0}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyr{cursor:not-allowed!important}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyt{background:none transparent;border:0 none;color:inherit;cursor:inherit;display:block;font-size:inherit;font-weight:inherit;margin:0;padding:.5rem 1rem;text-decoration:none}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyt:hover{text-decoration:none;color:inherit}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyu{cursor:not-allowed}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxyw{padding:.25rem .5rem}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy11{padding-top:.5rem;padding-bottom:.5rem;padding-right:0;padding-left:0}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy12{line-height:0!important;position:relative}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy12:before{font-size:.875rem;line-height:0;position:relative;top:.125rem}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy12:not(:last-child){margin-right:.5rem}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy13{left:50%;margin:-.875rem -.4375rem;position:absolute}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy14{cursor:not-allowed;display:inline}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy15{display:none}.pkg_sps-woodland_buttons__version_8_34_0__hash_125pcxy13>i{border-width:.125rem;height:.875rem;width:.875rem}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "@sps-woodland/buttons",
|
3
3
|
"description": "SPS Woodland Design System button components",
|
4
|
-
"version": "8.
|
4
|
+
"version": "8.34.0",
|
5
5
|
"author": "SPS Commerce",
|
6
6
|
"license": "UNLICENSED",
|
7
7
|
"repository": "https://github.com/SPSCommerce/woodland/tree/main/packages/@sps-woodland/buttons",
|
@@ -30,8 +30,9 @@
|
|
30
30
|
"@spscommerce/utils": "^7.0.0",
|
31
31
|
"react": "^16.9.0",
|
32
32
|
"react-dom": "^16.9.0",
|
33
|
-
"@sps-woodland/core": "8.
|
34
|
-
"@sps-woodland/tokens": "8.
|
33
|
+
"@sps-woodland/core": "8.34.0",
|
34
|
+
"@sps-woodland/tokens": "8.34.0",
|
35
|
+
"@spscommerce/i18n": "8.34.0"
|
35
36
|
},
|
36
37
|
"devDependencies": {
|
37
38
|
"@react-aria/button": "^3.3.5",
|
@@ -42,8 +43,9 @@
|
|
42
43
|
"@vanilla-extract/recipes": "^0.2.5",
|
43
44
|
"react": "^16.9.0",
|
44
45
|
"react-dom": "^16.9.0",
|
45
|
-
"@sps-woodland/core": "8.
|
46
|
-
"@sps-woodland/tokens": "8.
|
46
|
+
"@sps-woodland/core": "8.34.0",
|
47
|
+
"@sps-woodland/tokens": "8.34.0",
|
48
|
+
"@spscommerce/i18n": "8.34.0"
|
47
49
|
},
|
48
50
|
"dependencies": {
|
49
51
|
"@react-aria/button": "^3.7.0",
|