@tedi-design-system/react 19.1.0-rc.12 → 19.1.0-rc.14

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.
Files changed (24) hide show
  1. package/bundle-stats.html +1 -1
  2. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  3. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  4. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  5. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  6. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  7. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  8. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  9. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  10. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  11. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  12. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  13. package/external/prop-types/external/react-is/index.es.js +1 -1
  14. package/index.css +1 -1
  15. package/package.json +1 -1
  16. package/src/tedi/components/form/slider/slider.cjs.js +1 -1
  17. package/src/tedi/components/form/slider/slider.es.js +38 -38
  18. package/src/tedi/components/form/slider/slider.module.scss.cjs.js +1 -1
  19. package/src/tedi/components/form/slider/slider.module.scss.es.js +0 -1
  20. package/src/tedi/components/navigation/tabs/tabs-helpers.cjs.js +1 -1
  21. package/src/tedi/components/navigation/tabs/tabs-helpers.d.ts +5 -0
  22. package/src/tedi/components/navigation/tabs/tabs-helpers.es.js +7 -4
  23. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.cjs.js +1 -1
  24. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.es.js +17 -17
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "19.1.0-rc.12",
3
+ "version": "19.1.0-rc.14",
4
4
  "description": "TEDI Design System React component library — accessible, reusable UI components. Docs & live examples: https://storybook.tedi.ee/react/rc/",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),m=require("../../../../../external/classnames/index.cjs.js"),e=require("react"),ne=require("../../overlays/tooltip/tooltip.cjs.js"),de=require("../../overlays/tooltip/tooltip-content.cjs.js"),oe=require("../../overlays/tooltip/tooltip-trigger.cjs.js"),ue=require("../feedback-text/feedback-text.cjs.js"),ce=require("../form-label/form-label.cjs.js"),t=require("./slider.module.scss.cjs.js"),fe=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),F=e.forwardRef((h,M)=>{const{getCurrentBreakpointProps:V}=fe.useBreakpointProps(h.defaultServerBreakpoint),{id:E,name:P,label:x,hideLabel:R,required:_,min:l=0,max:d=100,step:D=1,value:c,defaultValue:$,onChange:o,disabled:s=!1,invalid:H=!1,minLabel:f,maxLabel:O,showCurrentValue:p=!1,valueFormatter:k,tooltip:U=!0,addonRight:j,helper:r,className:z,"aria-label":A,"aria-labelledby":G,"aria-valuetext":J}=V(h),K=e.useId(),b=E??`tedi-slider-${K}`,w=r?r.id??`${b}-helper`:void 0,[Q,W]=e.useState($??l),u=Math.min(d,Math.max(l,c??Q)),[X,L]=e.useState(!1),[Y,N]=e.useState(!1),[i,C]=e.useState(!1),S=!!U&&!s,Z=S&&(X||Y||i),ee=e.useCallback(()=>L(!0),[]),ae=e.useCallback(()=>L(!1),[]),te=e.useCallback(()=>N(!0),[]),re=e.useCallback(()=>N(!1),[]),T=e.useRef(null),n=e.useCallback(()=>{T.current=null,C(!1)},[]);e.useEffect(()=>{if(i)return window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n),()=>{window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n)}},[i,n]);const le=e.useCallback(g=>{s||(T.current=g.pointerId,C(!0))},[s]),se=e.useCallback(g=>{const B=Number(g.target.value);c===void 0&&W(B),o==null||o(B)},[o,c]),q=H||(r==null?void 0:r.type)==="error",I=d===l?0:(u-l)/(d-l)*100,y=k?k(u):u,v=p?y:O,ie=m.default(t.default["tedi-slider"],{[t.default["tedi-slider--disabled"]]:s,[t.default["tedi-slider--invalid"]]:q,[t.default["tedi-slider--dragging"]]:i&&!s},z);return a.jsxs("div",{"data-name":"slider",className:ie,children:[x&&a.jsx(ce.FormLabel,{id:b,label:x,required:_,hideLabel:R}),a.jsxs("div",{className:t.default["tedi-slider__container"],children:[a.jsxs("div",{className:t.default["tedi-slider__track-row"],children:[f!=null&&a.jsx("span",{className:t.default["tedi-slider__range-label"],"aria-hidden":"true",children:f}),a.jsxs("div",{className:t.default["tedi-slider__track"],style:{"--tedi-slider-progress":`${I}%`,"--tedi-slider-progress-ratio":`${I/100}`},children:[a.jsx("input",{ref:M,id:b,name:P,type:"range",min:l,max:d,step:D,value:u,disabled:s,required:_,"aria-invalid":q?"true":void 0,"aria-describedby":w,"aria-label":A,"aria-labelledby":G,"aria-valuetext":J,onChange:se,onMouseEnter:ee,onMouseLeave:ae,onPointerDown:le,onFocus:te,onBlur:re,className:m.default(t.default["tedi-slider__input"],{[t.default["tedi-slider__input--dragging"]]:i})}),S&&a.jsxs(ne.Tooltip,{open:Z,onToggle:()=>{},focusManager:{returnFocus:!1,initialFocus:-1},placement:"top",trackReferencePosition:!0,children:[a.jsx(oe.TooltipTrigger,{children:a.jsx("span",{className:t.default["tedi-slider__thumb-anchor"],"aria-hidden":"true",tabIndex:-1})}),a.jsx(de.TooltipContent,{children:y})]})]}),v!=null&&a.jsx("span",{className:t.default["tedi-slider__range-label"],"aria-hidden":p?void 0:"true","aria-live":p?"polite":void 0,children:v})]}),j&&a.jsx("div",{className:t.default["tedi-slider__addon"],children:j})]}),r&&a.jsx(ue.FeedbackText,{...r,id:w,className:m.default(t.default["tedi-slider__feedback"],r.className)})]})});F.displayName="Slider";exports.Slider=F;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),B=require("../../../../../external/classnames/index.cjs.js"),e=require("react"),ne=require("../../overlays/tooltip/tooltip.cjs.js"),de=require("../../overlays/tooltip/tooltip-content.cjs.js"),oe=require("../../overlays/tooltip/tooltip-trigger.cjs.js"),ue=require("../feedback-text/feedback-text.cjs.js"),ce=require("../form-label/form-label.cjs.js"),t=require("./slider.module.scss.cjs.js"),pe=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),F=e.forwardRef((m,M)=>{const{getCurrentBreakpointProps:V}=pe.useBreakpointProps(m.defaultServerBreakpoint),{id:E,name:P,label:h,hideLabel:R,required:x,min:l=0,max:d=100,step:D=1,value:c,defaultValue:$,onChange:o,disabled:i=!1,invalid:H=!1,minLabel:p,maxLabel:O,showCurrentValue:f=!1,valueFormatter:_,tooltip:U=!0,addonRight:j,helper:r,className:z,"aria-label":A,"aria-labelledby":G,"aria-valuetext":J}=V(m),K=e.useId(),v=E??`tedi-slider-${K}`,k=r?r.id??`${v}-helper`:void 0,[Q,W]=e.useState($??l),u=Math.min(d,Math.max(l,c??Q)),[X,w]=e.useState(!1),[Y,L]=e.useState(!1),[s,C]=e.useState(!1),N=!!U&&!i,Z=N&&(X||Y||s),ee=e.useCallback(()=>w(!0),[]),ae=e.useCallback(()=>w(!1),[]),te=e.useCallback(()=>L(!0),[]),re=e.useCallback(()=>L(!1),[]),S=e.useRef(null),n=e.useCallback(()=>{S.current=null,C(!1)},[]);e.useEffect(()=>{if(s)return window.addEventListener("pointerup",n),window.addEventListener("pointercancel",n),()=>{window.removeEventListener("pointerup",n),window.removeEventListener("pointercancel",n)}},[s,n]);const le=e.useCallback(g=>{i||(S.current=g.pointerId,C(!0))},[i]),ie=e.useCallback(g=>{const y=Number(g.target.value);c===void 0&&W(y),o==null||o(y)},[o,c]),T=H||(r==null?void 0:r.type)==="error",q=d===l?0:(u-l)/(d-l)*100,I=_?_(u):u,b=f?I:O,se=B.default(t.default["tedi-slider"],{[t.default["tedi-slider--disabled"]]:i,[t.default["tedi-slider--invalid"]]:T,[t.default["tedi-slider--dragging"]]:s&&!i},z);return a.jsxs("div",{"data-name":"slider",className:se,children:[h&&a.jsx(ce.FormLabel,{id:v,label:h,required:x,hideLabel:R}),a.jsxs("div",{className:t.default["tedi-slider__container"],children:[a.jsxs("div",{className:t.default["tedi-slider__track-row"],children:[p!=null&&a.jsx("span",{className:t.default["tedi-slider__range-label"],"aria-hidden":"true",children:p}),a.jsxs("div",{className:t.default["tedi-slider__track"],style:{"--tedi-slider-progress":`${q}%`,"--tedi-slider-progress-ratio":`${q/100}`},children:[a.jsx("input",{ref:M,id:v,name:P,type:"range",min:l,max:d,step:D,value:u,disabled:i,required:x,"aria-invalid":T?"true":void 0,"aria-describedby":k,"aria-label":A,"aria-labelledby":G,"aria-valuetext":J,onChange:ie,onMouseEnter:ee,onMouseLeave:ae,onPointerDown:le,onFocus:te,onBlur:re,className:B.default(t.default["tedi-slider__input"],{[t.default["tedi-slider__input--dragging"]]:s})}),N&&a.jsxs(ne.Tooltip,{open:Z,onToggle:()=>{},focusManager:{returnFocus:!1,initialFocus:-1},placement:"top",trackReferencePosition:!0,children:[a.jsx(oe.TooltipTrigger,{children:a.jsx("span",{className:t.default["tedi-slider__thumb-anchor"],"aria-hidden":"true",tabIndex:-1})}),a.jsx(de.TooltipContent,{children:I})]})]}),b!=null&&a.jsx("span",{className:t.default["tedi-slider__range-label"],"aria-hidden":f?void 0:"true","aria-live":f?"polite":void 0,children:b})]}),j&&a.jsx("div",{className:t.default["tedi-slider__addon"],children:j})]}),r&&a.jsx(ue.FeedbackText,{...r,id:k})]})});F.displayName="Slider";exports.Slider=F;
@@ -1,15 +1,15 @@
1
- import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
- import _ from "../../../../../external/classnames/index.es.js";
3
- import { forwardRef as oe, useId as de, useState as m, useCallback as i, useRef as ce, useEffect as ue } from "react";
1
+ import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
+ import P from "../../../../../external/classnames/index.es.js";
3
+ import { forwardRef as se, useId as de, useState as m, useCallback as i, useRef as ce, useEffect as ue } from "react";
4
4
  import { Tooltip as me } from "../../overlays/tooltip/tooltip.es.js";
5
5
  import { TooltipContent as pe } from "../../overlays/tooltip/tooltip-content.es.js";
6
- import { TooltipTrigger as fe } from "../../overlays/tooltip/tooltip-trigger.es.js";
7
- import { FeedbackText as ve } from "../feedback-text/feedback-text.es.js";
6
+ import { TooltipTrigger as ve } from "../../overlays/tooltip/tooltip-trigger.es.js";
7
+ import { FeedbackText as fe } from "../feedback-text/feedback-text.es.js";
8
8
  import { FormLabel as ge } from "../form-label/form-label.es.js";
9
9
  import e from "./slider.module.scss.es.js";
10
10
  import { useBreakpointProps as he } from "../../../helpers/hooks/use-breakpoint-props.es.js";
11
- const be = oe((N, S) => {
12
- const { getCurrentBreakpointProps: D } = he(N.defaultServerBreakpoint), {
11
+ const be = se((_, S) => {
12
+ const { getCurrentBreakpointProps: D } = he(_.defaultServerBreakpoint), {
13
13
  id: R,
14
14
  name: $,
15
15
  label: w,
@@ -23,58 +23,58 @@ const be = oe((N, S) => {
23
23
  onChange: c,
24
24
  disabled: n = !1,
25
25
  invalid: O = !1,
26
- minLabel: f,
26
+ minLabel: v,
27
27
  maxLabel: U,
28
- showCurrentValue: v = !1,
29
- valueFormatter: x,
28
+ showCurrentValue: f = !1,
29
+ valueFormatter: N,
30
30
  tooltip: z = !0,
31
- addonRight: I,
31
+ addonRight: x,
32
32
  helper: a,
33
33
  className: A,
34
34
  "aria-label": G,
35
35
  "aria-labelledby": J,
36
36
  "aria-valuetext": K
37
- } = D(N), Q = de(), g = R ?? `tedi-slider-${Q}`, k = a ? a.id ?? `${g}-helper` : void 0, [W, X] = m(q ?? t), u = Math.min(d, Math.max(t, p ?? W)), [Y, y] = m(!1), [Z, F] = m(!1), [l, T] = m(!1), V = !!z && !n, ee = V && (Y || Z || l), re = i(() => y(!0), []), ae = i(() => y(!1), []), ie = i(() => F(!0), []), te = i(() => F(!1), []), B = ce(null), s = i(() => {
38
- B.current = null, T(!1);
37
+ } = D(_), Q = de(), g = R ?? `tedi-slider-${Q}`, I = a ? a.id ?? `${g}-helper` : void 0, [W, X] = m(q ?? t), u = Math.min(d, Math.max(t, p ?? W)), [Y, y] = m(!1), [Z, F] = m(!1), [l, T] = m(!1), V = !!z && !n, ee = V && (Y || Z || l), re = i(() => y(!0), []), ae = i(() => y(!1), []), ie = i(() => F(!0), []), te = i(() => F(!1), []), k = ce(null), o = i(() => {
38
+ k.current = null, T(!1);
39
39
  }, []);
40
40
  ue(() => {
41
41
  if (l)
42
- return window.addEventListener("pointerup", s), window.addEventListener("pointercancel", s), () => {
43
- window.removeEventListener("pointerup", s), window.removeEventListener("pointercancel", s);
42
+ return window.addEventListener("pointerup", o), window.addEventListener("pointercancel", o), () => {
43
+ window.removeEventListener("pointerup", o), window.removeEventListener("pointercancel", o);
44
44
  };
45
- }, [l, s]);
45
+ }, [l, o]);
46
46
  const ne = i(
47
47
  (b) => {
48
- n || (B.current = b.pointerId, T(!0));
48
+ n || (k.current = b.pointerId, T(!0));
49
49
  },
50
50
  [n]
51
51
  ), le = i(
52
52
  (b) => {
53
- const P = Number(b.target.value);
54
- p === void 0 && X(P), c == null || c(P);
53
+ const C = Number(b.target.value);
54
+ p === void 0 && X(C), c == null || c(C);
55
55
  },
56
56
  [c, p]
57
- ), E = O || (a == null ? void 0 : a.type) === "error", M = d === t ? 0 : (u - t) / (d - t) * 100, C = x ? x(u) : u, h = v ? C : U, se = _(
57
+ ), B = O || (a == null ? void 0 : a.type) === "error", E = d === t ? 0 : (u - t) / (d - t) * 100, M = N ? N(u) : u, h = f ? M : U, oe = P(
58
58
  e["tedi-slider"],
59
59
  {
60
60
  [e["tedi-slider--disabled"]]: n,
61
- [e["tedi-slider--invalid"]]: E,
61
+ [e["tedi-slider--invalid"]]: B,
62
62
  [e["tedi-slider--dragging"]]: l && !n
63
63
  },
64
64
  A
65
65
  );
66
- return /* @__PURE__ */ o("div", { "data-name": "slider", className: se, children: [
66
+ return /* @__PURE__ */ s("div", { "data-name": "slider", className: oe, children: [
67
67
  w && /* @__PURE__ */ r(ge, { id: g, label: w, required: L, hideLabel: j }),
68
- /* @__PURE__ */ o("div", { className: e["tedi-slider__container"], children: [
69
- /* @__PURE__ */ o("div", { className: e["tedi-slider__track-row"], children: [
70
- f != null && /* @__PURE__ */ r("span", { className: e["tedi-slider__range-label"], "aria-hidden": "true", children: f }),
71
- /* @__PURE__ */ o(
68
+ /* @__PURE__ */ s("div", { className: e["tedi-slider__container"], children: [
69
+ /* @__PURE__ */ s("div", { className: e["tedi-slider__track-row"], children: [
70
+ v != null && /* @__PURE__ */ r("span", { className: e["tedi-slider__range-label"], "aria-hidden": "true", children: v }),
71
+ /* @__PURE__ */ s(
72
72
  "div",
73
73
  {
74
74
  className: e["tedi-slider__track"],
75
75
  style: {
76
- "--tedi-slider-progress": `${M}%`,
77
- "--tedi-slider-progress-ratio": `${M / 100}`
76
+ "--tedi-slider-progress": `${E}%`,
77
+ "--tedi-slider-progress-ratio": `${E / 100}`
78
78
  },
79
79
  children: [
80
80
  /* @__PURE__ */ r(
@@ -90,8 +90,8 @@ const be = oe((N, S) => {
90
90
  value: u,
91
91
  disabled: n,
92
92
  required: L,
93
- "aria-invalid": E ? "true" : void 0,
94
- "aria-describedby": k,
93
+ "aria-invalid": B ? "true" : void 0,
94
+ "aria-describedby": I,
95
95
  "aria-label": G,
96
96
  "aria-labelledby": J,
97
97
  "aria-valuetext": K,
@@ -101,12 +101,12 @@ const be = oe((N, S) => {
101
101
  onPointerDown: ne,
102
102
  onFocus: ie,
103
103
  onBlur: te,
104
- className: _(e["tedi-slider__input"], {
104
+ className: P(e["tedi-slider__input"], {
105
105
  [e["tedi-slider__input--dragging"]]: l
106
106
  })
107
107
  }
108
108
  ),
109
- V && /* @__PURE__ */ o(
109
+ V && /* @__PURE__ */ s(
110
110
  me,
111
111
  {
112
112
  open: ee,
@@ -116,8 +116,8 @@ const be = oe((N, S) => {
116
116
  placement: "top",
117
117
  trackReferencePosition: !0,
118
118
  children: [
119
- /* @__PURE__ */ r(fe, { children: /* @__PURE__ */ r("span", { className: e["tedi-slider__thumb-anchor"], "aria-hidden": "true", tabIndex: -1 }) }),
120
- /* @__PURE__ */ r(pe, { children: C })
119
+ /* @__PURE__ */ r(ve, { children: /* @__PURE__ */ r("span", { className: e["tedi-slider__thumb-anchor"], "aria-hidden": "true", tabIndex: -1 }) }),
120
+ /* @__PURE__ */ r(pe, { children: M })
121
121
  ]
122
122
  }
123
123
  )
@@ -128,15 +128,15 @@ const be = oe((N, S) => {
128
128
  "span",
129
129
  {
130
130
  className: e["tedi-slider__range-label"],
131
- "aria-hidden": v ? void 0 : "true",
132
- "aria-live": v ? "polite" : void 0,
131
+ "aria-hidden": f ? void 0 : "true",
132
+ "aria-live": f ? "polite" : void 0,
133
133
  children: h
134
134
  }
135
135
  )
136
136
  ] }),
137
- I && /* @__PURE__ */ r("div", { className: e["tedi-slider__addon"], children: I })
137
+ x && /* @__PURE__ */ r("div", { className: e["tedi-slider__addon"], children: x })
138
138
  ] }),
139
- a && /* @__PURE__ */ r(ve, { ...a, id: k, className: _(e["tedi-slider__feedback"], a.className) })
139
+ a && /* @__PURE__ */ r(fe, { ...a, id: I })
140
140
  ] });
141
141
  });
142
142
  be.displayName = "Slider";
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-slider":"tedi-slider-90e24e7d","tedi-slider__container":"tedi-slider__container-525c4b64","tedi-slider__track-row":"tedi-slider__track-row-95e9c2d5","tedi-slider__range-label":"tedi-slider__range-label-a2a6a43b","tedi-slider__track":"tedi-slider__track-a7afc8d6","tedi-slider__thumb-anchor":"tedi-slider__thumb-anchor-7e282370","tedi-slider__input":"tedi-slider__input-b2d1c042","tedi-slider__input--dragging":"tedi-slider__input--dragging-6a2f5f85","tedi-slider__addon":"tedi-slider__addon-6b259d81","tedi-slider__feedback":"tedi-slider__feedback-dad1545e","tedi-slider--disabled":"tedi-slider--disabled-d1da914a","tedi-slider--dragging":"tedi-slider--dragging-c82f4f25"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-slider":"tedi-slider-90e24e7d","tedi-slider__container":"tedi-slider__container-525c4b64","tedi-slider__track-row":"tedi-slider__track-row-95e9c2d5","tedi-slider__range-label":"tedi-slider__range-label-a2a6a43b","tedi-slider__track":"tedi-slider__track-a7afc8d6","tedi-slider__thumb-anchor":"tedi-slider__thumb-anchor-7e282370","tedi-slider__input":"tedi-slider__input-b2d1c042","tedi-slider__input--dragging":"tedi-slider__input--dragging-6a2f5f85","tedi-slider__addon":"tedi-slider__addon-6b259d81","tedi-slider--disabled":"tedi-slider--disabled-d1da914a","tedi-slider--dragging":"tedi-slider--dragging-c82f4f25"};exports.default=e;
@@ -8,7 +8,6 @@ const d = {
8
8
  "tedi-slider__input": "tedi-slider__input-b2d1c042",
9
9
  "tedi-slider__input--dragging": "tedi-slider__input--dragging-6a2f5f85",
10
10
  "tedi-slider__addon": "tedi-slider__addon-6b259d81",
11
- "tedi-slider__feedback": "tedi-slider__feedback-dad1545e",
12
11
  "tedi-slider--disabled": "tedi-slider--disabled-d1da914a",
13
12
  "tedi-slider--dragging": "tedi-slider--dragging-c82f4f25"
14
13
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="Home"&&e.key!=="End")return null;const l=e.currentTarget.closest('[role="tablist"]');if(!l)return null;const t=Array.from(l.querySelectorAll('[role="tab"]:not([disabled])')).filter(a=>getComputedStyle(a).display!=="none"),n=t.indexOf(e.currentTarget);if(t.length===0||n===-1)return null;let r=-1;switch(e.key){case"ArrowLeft":r=n===0?t.length-1:n-1;break;case"ArrowRight":r=n===t.length-1?0:n+1;break;case"Home":r=0;break;case"End":r=t.length-1;break}return r!==-1?(e.preventDefault(),t[r].focus(),t[r].scrollIntoView({block:"nearest",inline:"nearest"}),t[r]):null};exports.navigateTablist=o;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=e=>{e.scrollIntoView({block:"nearest",inline:"nearest"})},s=e=>{if(e.key!=="ArrowLeft"&&e.key!=="ArrowRight"&&e.key!=="Home"&&e.key!=="End")return null;const l=e.currentTarget.closest('[role="tablist"]');if(!l)return null;const t=Array.from(l.querySelectorAll('[role="tab"]:not([disabled])')).filter(a=>getComputedStyle(a).display!=="none"),n=t.indexOf(e.currentTarget);if(t.length===0||n===-1)return null;let r=-1;switch(e.key){case"ArrowLeft":r=n===0?t.length-1:n-1;break;case"ArrowRight":r=n===t.length-1?0:n+1;break;case"Home":r=0;break;case"End":r=t.length-1;break}return r!==-1?(e.preventDefault(),t[r].focus(),o(t[r]),t[r]):null};exports.navigateTablist=s;exports.scrollTabIntoView=o;
@@ -1,3 +1,8 @@
1
+ /**
2
+ * Scrolls a tab fully into view inside a horizontally scrollable tablist.
3
+ * A no-op when the tab is already fully visible.
4
+ */
5
+ export declare const scrollTabIntoView: (tab: HTMLElement) => void;
1
6
  /**
2
7
  * Navigates to a sibling tab in the tablist using ArrowLeft/ArrowRight/Home/End keys.
3
8
  * Returns the target tab element if navigation occurred, or null otherwise.
@@ -1,10 +1,12 @@
1
- const o = (e) => {
1
+ const a = (e) => {
2
+ e.scrollIntoView({ block: "nearest", inline: "nearest" });
3
+ }, s = (e) => {
2
4
  if (e.key !== "ArrowLeft" && e.key !== "ArrowRight" && e.key !== "Home" && e.key !== "End")
3
5
  return null;
4
6
  const l = e.currentTarget.closest('[role="tablist"]');
5
7
  if (!l) return null;
6
8
  const t = Array.from(l.querySelectorAll('[role="tab"]:not([disabled])')).filter(
7
- (a) => getComputedStyle(a).display !== "none"
9
+ (o) => getComputedStyle(o).display !== "none"
8
10
  ), n = t.indexOf(e.currentTarget);
9
11
  if (t.length === 0 || n === -1) return null;
10
12
  let r = -1;
@@ -22,8 +24,9 @@ const o = (e) => {
22
24
  r = t.length - 1;
23
25
  break;
24
26
  }
25
- return r !== -1 ? (e.preventDefault(), t[r].focus(), t[r].scrollIntoView({ block: "nearest", inline: "nearest" }), t[r]) : null;
27
+ return r !== -1 ? (e.preventDefault(), t[r].focus(), a(t[r]), t[r]) : null;
26
28
  };
27
29
  export {
28
- o as navigateTablist
30
+ s as navigateTablist,
31
+ a as scrollTabIntoView
29
32
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),m=require("../../../../../../external/classnames/index.cjs.js"),x=require("../../../base/icon/icon.cjs.js"),r=require("../tabs.module.scss.cjs.js"),_=require("../tabs-context.cjs.js"),q=require("../tabs-helpers.cjs.js"),c=l=>{const{id:e,children:d,icon:a,disabled:t=!1,className:b}=l,{currentTab:u,setCurrentTab:i}=_.useTabsContext(),s=u===e,g=()=>{t||i(e)},T=f=>{const n=q.navigateTablist(f);n&&i(n.id)};return o.jsxs("button",{"data-name":"tabs-trigger",id:e,role:"tab",type:"button","aria-selected":s,"aria-controls":`${e}-panel`,tabIndex:s?0:-1,disabled:t,className:m.default(r.default["tedi-tabs__trigger"],{[r.default["tedi-tabs__trigger--selected"]]:s},{[r.default["tedi-tabs__trigger--disabled"]]:t},b),onClick:g,onKeyDown:T,children:[a&&o.jsx(x.Icon,{name:a,size:18,color:"inherit"}),d]})};c.displayName="TabsTrigger";exports.TabsTrigger=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),x=require("../../../../../../external/classnames/index.cjs.js"),_=require("../../../base/icon/icon.cjs.js"),a=require("../tabs.module.scss.cjs.js"),q=require("../tabs-context.cjs.js"),l=require("../tabs-helpers.cjs.js"),d=b=>{const{id:e,children:u,icon:n,disabled:t=!1,className:g}=b,{currentTab:T,setCurrentTab:i}=q.useTabsContext(),r=T===e,f=s=>{t||(i(e),l.scrollTabIntoView(s.currentTarget))},m=s=>{const o=l.navigateTablist(s);o&&i(o.id)};return c.jsxs("button",{"data-name":"tabs-trigger",id:e,role:"tab",type:"button","aria-selected":r,"aria-controls":`${e}-panel`,tabIndex:r?0:-1,disabled:t,className:x.default(a.default["tedi-tabs__trigger"],{[a.default["tedi-tabs__trigger--selected"]]:r},{[a.default["tedi-tabs__trigger--disabled"]]:t},g),onClick:f,onKeyDown:m,children:[n&&c.jsx(_.Icon,{name:n,size:18,color:"inherit"}),u]})};d.displayName="TabsTrigger";exports.TabsTrigger=d;
@@ -1,15 +1,15 @@
1
- import { jsxs as p, jsx as f } from "react/jsx-runtime";
2
- import T from "../../../../../../external/classnames/index.es.js";
1
+ import { jsxs as p, jsx as T } from "react/jsx-runtime";
2
+ import f from "../../../../../../external/classnames/index.es.js";
3
3
  import { Icon as u } from "../../../base/icon/icon.es.js";
4
4
  import s from "../tabs.module.scss.es.js";
5
5
  import { useTabsContext as _ } from "../tabs-context.es.js";
6
- import { navigateTablist as h } from "../tabs-helpers.es.js";
7
- const x = (n) => {
8
- const { id: e, children: c, icon: a, disabled: t = !1, className: l } = n, { currentTab: d, setCurrentTab: i } = _(), r = d === e, m = () => {
9
- t || i(e);
10
- }, b = (g) => {
11
- const o = h(g);
12
- o && i(o.id);
6
+ import { navigateTablist as h, scrollTabIntoView as x } from "../tabs-helpers.es.js";
7
+ const y = (c) => {
8
+ const { id: e, children: l, icon: i, disabled: t = !1, className: d } = c, { currentTab: m, setCurrentTab: o } = _(), r = m === e, b = (a) => {
9
+ t || (o(e), x(a.currentTarget));
10
+ }, g = (a) => {
11
+ const n = h(a);
12
+ n && o(n.id);
13
13
  };
14
14
  return /* @__PURE__ */ p(
15
15
  "button",
@@ -22,22 +22,22 @@ const x = (n) => {
22
22
  "aria-controls": `${e}-panel`,
23
23
  tabIndex: r ? 0 : -1,
24
24
  disabled: t,
25
- className: T(
25
+ className: f(
26
26
  s["tedi-tabs__trigger"],
27
27
  { [s["tedi-tabs__trigger--selected"]]: r },
28
28
  { [s["tedi-tabs__trigger--disabled"]]: t },
29
- l
29
+ d
30
30
  ),
31
- onClick: m,
32
- onKeyDown: b,
31
+ onClick: b,
32
+ onKeyDown: g,
33
33
  children: [
34
- a && /* @__PURE__ */ f(u, { name: a, size: 18, color: "inherit" }),
35
- c
34
+ i && /* @__PURE__ */ T(u, { name: i, size: 18, color: "inherit" }),
35
+ l
36
36
  ]
37
37
  }
38
38
  );
39
39
  };
40
- x.displayName = "TabsTrigger";
40
+ y.displayName = "TabsTrigger";
41
41
  export {
42
- x as TabsTrigger
42
+ y as TabsTrigger
43
43
  };