@stihl-design-system/components
Version:
Welcome to the STIHL Design System react component library.
257 lines (256 loc) • 9.67 kB
JavaScript
"use client";
import { jsx as v, jsxs as me } from "react/jsx-runtime";
import { d as ke } from "./chunks/index.CgTHIF3K.js";
import { c as re } from "./chunks/index.CEyLAtio.js";
import { useState as he, useRef as A, useEffect as xe } from "react";
import { g as b, i as be } from "./chunks/is-animation-disabled.CUl4N3LI.js";
import { h as Ce } from "./chunks/has-window.ut_-aShB.js";
import { g as Ee } from "./chunks/helpers.BbWkXTr3.js";
import { u as pe } from "./chunks/useIsomorphicLayoutEffect.CnJ9AMFS.js";
import { D as ye } from "./chunks/Button.B7xF1E19.js";
import { D as We } from "./chunks/Icon.DGTYCv63.js";
import { NumberIndicator as ze } from "./numberindicator.Ddf3ESi7.js";
import { g as Ae, a as we } from "./chunks/TabPane.utils.DG16Y2uD.js";
import { s as i, N as He } from "./chunks/NavigationTabList.dYFYTmWv.js";
const H = 48, Ye = (p) => {
const e = ke.c(62);
let g, T, d, M, I, o, X, P, $, m, c;
e[0] !== p ? ({
aria: g,
id: m,
selectedTabIndex: o,
setSelectedTabIndex: X,
tabs: c,
alignment: P,
className: T,
defaultSelectedTabIndex: $,
isNavigation: d,
onTabChange: M,
...I
} = p, e[0] = p, e[1] = g, e[2] = T, e[3] = d, e[4] = M, e[5] = I, e[6] = o, e[7] = X, e[8] = P, e[9] = $, e[10] = m, e[11] = c) : (g = e[1], T = e[2], d = e[3], M = e[4], I = e[5], o = e[6], X = e[7], P = e[8], $ = e[9], m = e[10], c = e[11]);
const j = P === void 0 ? "left" : P, Re = $ === void 0 ? 0 : $, [V, h] = he(Re), [Le, Se] = he(!1), [De, Ne] = he(!1);
let _;
e[12] === Symbol.for("react.memo_cache_sentinel") ? (_ = [], e[12] = _) : _ = e[12];
const y = A(_), w = A(null), a = A(null), f = A(null), O = A(!1), ve = A(o), se = () => {
Te(), Be();
};
let q;
e[13] === Symbol.for("react.memo_cache_sentinel") ? (q = [], e[13] = q) : q = e[13], pe(() => {
const s = new ResizeObserver(se);
return a.current && s.observe(a.current), () => {
s.disconnect();
};
}, q);
let F;
e[14] !== j || e[15] !== c ? (F = [c, j], e[14] = j, e[15] = c, e[16] = F) : F = e[16], pe(() => {
var n;
const s = ["18px 'STIHL Contraface Digital Text Regular'", "18px 'STIHL Contraface Digital Text Bold'", "14px 'STIHL Contraface Digital Text Demi'"];
Promise.all(s.map(Me)).then(() => {
ne(o), K("next", o, "instant"), Te(), O.current = !0;
}).catch(Pe);
const t = () => {
!O.current || !f.current || (r.matches ? f.current.style.transitionDuration = "0s" : f.current.style.transitionDuration = "");
}, r = window.matchMedia("(prefers-reduced-motion: reduce)");
return r.addEventListener("change", t), (n = a.current) == null || n.addEventListener("scroll", se), () => {
var l;
r.removeEventListener("change", t), (l = a.current) == null || l.removeEventListener("scroll", se);
};
}, F);
let G;
e[17] !== o ? (G = [o], e[17] = o, e[18] = G) : G = e[18], pe(() => {
if (O.current && (ne(o), d)) {
const s = ge(o);
h(o), K(s, o);
}
ve.current = o;
}, G);
let Q, J;
e[19] !== V ? (Q = () => {
var s;
O.current && ((s = y.current[V]) == null || s.focus());
}, J = [V], e[19] = V, e[20] = Q, e[21] = J) : (Q = e[20], J = e[21]), xe(Q, J);
const R = (s) => {
const t = ge(s);
X(s), h(s), K(t, s), M && M(s);
}, ge = (s) => {
const t = b(a.current), r = b(y.current[s]);
let n;
return r.left - H < t.left ? n = "prev" : r.right + H > t.right ? n = "next" : n = o < s ? "next" : "prev", n;
}, Te = () => {
if (a.current && w.current) {
const s = b(a.current), t = b(w.current);
Se(t.left < s.left), Ne(t.right > s.right + 4);
}
};
let U;
e[22] === Symbol.for("react.memo_cache_sentinel") ? (U = (s) => {
const t = s === void 0 ? 0 : s;
Ce && f.current && !be() && setTimeout(() => {
f.current && (f.current.style.transitionDuration = "250ms");
}, t);
}, e[22] = U) : U = e[22];
const Ie = U, Be = () => {
f.current && (f.current.style.transitionDuration = "0s", ne(ve.current), Ie());
}, ne = (s) => {
const t = f.current, r = b(y.current[s]), n = b(w.current), l = r.left - n.left;
t && (O.current ? (t.style.width = `${r.width}px`, t.style.transform = `translateX(${l}px)`) : (t.style.transitionDuration = "0s", t.style.transform = `translateX(${l}px)`, t.style.width = `${r.width}px`, Ie(50)));
}, oe = (s, t) => {
let r;
e: switch (s.key) {
case "ArrowLeft": {
r = (t > 0 ? t : c.length) - 1, h(r);
break e;
}
case "ArrowRight": {
r = (t + 1) % c.length, h(r);
break e;
}
case "Home": {
r = 0, h(r);
break e;
}
case "End": {
r = c.length - 1, h(r);
break e;
}
case "Enter":
case " ": {
R(t);
return;
}
default:
return;
}
if (r !== void 0) {
const n = r > t ? "next" : "prev";
setTimeout(() => K(n, r), 0);
}
s.preventDefault();
}, le = (s, t) => {
let r;
e: switch (s.key) {
case "Tab": {
if (s.shiftKey) {
r = t - 1 < 0 ? 0 : t - 1, h(r), t !== 0 && s.preventDefault();
break e;
} else
r = t + 1 > c.length - 1 ? t : t + 1, h(r), t !== c.length - 1 && s.preventDefault();
break e;
}
case "Enter": {
R(t);
return;
}
default:
return;
}
if (r !== void 0) {
const n = r > t ? "next" : "prev";
setTimeout(() => K(n, r), 0);
}
}, K = (s, t, r) => {
const n = r === void 0 ? "smooth" : r, l = y.current[t], W = a.current, z = b(l), ue = b(W);
let de;
if (!(!l || !W)) {
if (s === "prev") {
if (z.left - H > ue.left)
return;
de = l.offsetLeft - H;
} else {
if (z.right + H < ue.right)
return;
de = l.offsetLeft + l.offsetWidth - ue.width + H;
}
W.scrollTo({
left: de,
behavior: be() ? "instant" : n
});
}
};
let u;
if (e[23] === Symbol.for("react.memo_cache_sentinel")) {
u = (t) => {
var n;
const r = s(t);
(n = a.current) == null || n.scrollTo({
left: r,
behavior: be() ? "instant" : "smooth"
});
};
const s = (t) => {
if (!w.current || !a.current)
return 0;
const {
scrollLeft: r,
offsetWidth: n
} = a.current, l = Math.round(n * 0.2);
return t === "next" ? r + l : r - l;
};
e[23] = u;
} else
u = e[23];
const ce = j === "center";
let Y;
e[24] !== ce ? (Y = re(i.scroller, {
[i.scrollerCentered]: ce
}), e[24] = ce, e[25] = Y) : Y = e[25];
const Z = Y, ae = d ? "nav" : "div";
let L;
e[26] !== T ? (L = re(i.tabsWrapper, T), e[26] = T, e[27] = L) : L = e[27];
let S;
e[28] !== oe || e[29] !== le || e[30] !== d || e[31] !== Z || e[32] !== o || e[33] !== R || e[34] !== m || e[35] !== c ? (S = d ? /* @__PURE__ */ v(He, { tabs: c, tabRefs: y, scrollerRef: w, handleNavigationKeydown: le, scrollerClass: Z, selectedTabIndex: o, setSelectedTab: R }) : /* @__PURE__ */ v("div", { role: "tablist", className: Z, ref: w, children: c.map((s, t) => {
const {
id: r,
label: n,
iconName: l,
numberIndicatorValue: W
} = s;
return /* @__PURE__ */ me("button", { id: we(m, r), role: "tab", "aria-selected": o === t, "aria-controls": Ae(m, r, t), tabIndex: o === t ? 0 : -1, className: i.tab, ref: (z) => {
y.current[t] = z;
}, onClick: () => R(t), onKeyDown: (z) => oe(z, t), children: [
l && /* @__PURE__ */ v(We, { name: l, "aria-hidden": "true" }),
n,
W && /* @__PURE__ */ v(ze, { label: W })
] }, we(m, r));
}) }), e[28] = oe, e[29] = le, e[30] = d, e[31] = Z, e[32] = o, e[33] = R, e[34] = m, e[35] = c, e[36] = S) : S = e[36];
let ee;
e[37] === Symbol.for("react.memo_cache_sentinel") ? (ee = /* @__PURE__ */ v("span", { className: i.indicator, ref: f }), e[37] = ee) : ee = e[37];
let D;
e[38] !== ae || e[39] !== g || e[40] !== S ? (D = /* @__PURE__ */ me(ae, { className: i.scrollWrapper, ref: a, ...g, children: [
S,
ee
] }), e[38] = ae, e[39] = g, e[40] = S, e[41] = D) : D = e[41];
const ie = !Le;
let N;
e[42] !== ie ? (N = re(i.scrollButton, {
[i.scrollButtonHidden]: ie
}), e[42] = ie, e[43] = N) : N = e[43];
let B;
e[44] !== u ? (B = () => u("prev"), e[44] = u, e[45] = B) : B = e[45];
let k;
e[46] !== N || e[47] !== B ? (k = /* @__PURE__ */ v(ye, { variant: "filled", className: N, hideLabel: !0, iconName: "chevron-left", tabIndex: -1, size: "small", onClick: B, children: "Left" }), e[46] = N, e[47] = B, e[48] = k) : k = e[48];
const fe = !De;
let x;
e[49] !== fe ? (x = re(i.scrollButton, i.scrollButtonRight, {
[i.scrollButtonHidden]: fe
}), e[49] = fe, e[50] = x) : x = e[50];
let C;
e[51] !== u ? (C = () => u("next"), e[51] = u, e[52] = C) : C = e[52];
let E;
e[53] !== x || e[54] !== C ? (E = /* @__PURE__ */ v(ye, { variant: "filled", className: x, hideLabel: !0, iconName: "chevron-right", tabIndex: -1, size: "small", onClick: C, children: "Right" }), e[53] = x, e[54] = C, e[55] = E) : E = e[55];
let te;
return e[56] !== I || e[57] !== L || e[58] !== D || e[59] !== k || e[60] !== E ? (te = /* @__PURE__ */ me("div", { className: L, ...I, children: [
D,
k,
E
] }), e[56] = I, e[57] = L, e[58] = D, e[59] = k, e[60] = E, e[61] = te) : te = e[61], te;
};
function Me(p) {
return document.fonts.load(p);
}
function Pe(p) {
throw new Error(Ee("DSTabs", `The component requires the fonts to be loaded: ${p}`));
}
export {
Ye as TabList
};