@tedi-design-system/react 17.0.0-rc.4 → 17.0.0-rc.6

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 (63) hide show
  1. package/_virtual/index.es13.js +2 -2
  2. package/_virtual/index.es14.js +2 -2
  3. package/bundle-stats.html +1 -1
  4. package/external/react-is/index.cjs.js +1 -1
  5. package/external/react-is/index.es.js +1 -1
  6. package/external/toposort/index.cjs.js +1 -1
  7. package/external/toposort/index.es.js +1 -1
  8. package/index.css +1 -1
  9. package/package.json +1 -1
  10. package/src/community/components/tabs/tabs/tabs.d.ts +6 -0
  11. package/src/community/components/tabs/tabs-item/tabs-item.d.ts +6 -0
  12. package/src/community/components/tabs/tabs-nav/tabs-nav-item.d.ts +6 -0
  13. package/src/community/components/tabs/tabs-nav/tabs-nav.d.ts +6 -0
  14. package/src/tedi/components/form/textarea/textarea.cjs.js +1 -1
  15. package/src/tedi/components/form/textarea/textarea.d.ts +29 -0
  16. package/src/tedi/components/form/textarea/textarea.es.js +82 -36
  17. package/src/tedi/components/form/textarea/textarea.module.scss.cjs.js +1 -1
  18. package/src/tedi/components/form/textarea/textarea.module.scss.es.js +1 -0
  19. package/src/tedi/components/misc/scroll-fade/scroll-fade.cjs.js +1 -1
  20. package/src/tedi/components/misc/scroll-fade/scroll-fade.es.js +32 -42
  21. package/src/tedi/components/navigation/tabs/index.d.ts +5 -0
  22. package/src/tedi/components/navigation/tabs/tabs-content/tabs-content.cjs.js +1 -0
  23. package/src/tedi/components/navigation/tabs/tabs-content/tabs-content.d.ts +22 -0
  24. package/src/tedi/components/navigation/tabs/tabs-content/tabs-content.es.js +22 -0
  25. package/src/tedi/components/navigation/tabs/tabs-context.cjs.js +1 -0
  26. package/src/tedi/components/navigation/tabs/tabs-context.d.ts +7 -0
  27. package/src/tedi/components/navigation/tabs/tabs-context.es.js +11 -0
  28. package/src/tedi/components/navigation/tabs/tabs-helpers.cjs.js +1 -0
  29. package/src/tedi/components/navigation/tabs/tabs-helpers.d.ts +5 -0
  30. package/src/tedi/components/navigation/tabs/tabs-helpers.es.js +29 -0
  31. package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.cjs.js +1 -0
  32. package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.d.ts +37 -0
  33. package/src/tedi/components/navigation/tabs/tabs-list/tabs-list.es.js +102 -0
  34. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.cjs.js +1 -0
  35. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.d.ts +31 -0
  36. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.es.js +43 -0
  37. package/src/tedi/components/navigation/tabs/tabs.cjs.js +1 -0
  38. package/src/tedi/components/navigation/tabs/tabs.d.ts +40 -0
  39. package/src/tedi/components/navigation/tabs/tabs.es.js +24 -0
  40. package/src/tedi/components/navigation/tabs/tabs.module.scss.cjs.js +1 -0
  41. package/src/tedi/components/navigation/tabs/tabs.module.scss.es.js +17 -0
  42. package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.cjs.js +1 -1
  43. package/src/tedi/components/overlays/dropdown/dropdown-trigger/dropdown-trigger.es.js +9 -7
  44. package/src/tedi/components/tags/status-badge/status-badge.cjs.js +1 -1
  45. package/src/tedi/components/tags/status-badge/status-badge.es.js +25 -25
  46. package/src/tedi/components/tags/status-badge/status-badge.module.scss.cjs.js +1 -1
  47. package/src/tedi/components/tags/status-badge/status-badge.module.scss.es.js +0 -6
  48. package/src/tedi/components/tags/status-indicator/index.d.ts +1 -0
  49. package/src/tedi/components/tags/status-indicator/status-indicator.cjs.js +1 -0
  50. package/src/tedi/components/tags/status-indicator/status-indicator.d.ts +36 -0
  51. package/src/tedi/components/tags/status-indicator/status-indicator.es.js +26 -0
  52. package/src/tedi/components/tags/status-indicator/status-indicator.module.scss.cjs.js +1 -0
  53. package/src/tedi/components/tags/status-indicator/status-indicator.module.scss.es.js +14 -0
  54. package/src/tedi/helpers/hooks/use-scroll-fade.cjs.js +1 -0
  55. package/src/tedi/helpers/hooks/use-scroll-fade.d.ts +35 -0
  56. package/src/tedi/helpers/hooks/use-scroll-fade.es.js +34 -0
  57. package/src/tedi/helpers/index.d.ts +1 -0
  58. package/src/tedi/index.d.ts +2 -0
  59. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  60. package/src/tedi/providers/label-provider/labels-map.d.ts +7 -0
  61. package/src/tedi/providers/label-provider/labels-map.es.js +8 -1
  62. package/tedi.cjs.js +1 -1
  63. package/tedi.es.js +186 -171
@@ -0,0 +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;
@@ -0,0 +1,31 @@
1
+ import { default as React } from 'react';
2
+ import { IconProps } from '../../../base/icon/icon';
3
+ export interface TabsTriggerProps {
4
+ /**
5
+ * Unique identifier for this tab. Used as the element id and to link to the
6
+ * corresponding TabsContent panel (aria-controls="{id}-panel").
7
+ */
8
+ id: string;
9
+ /**
10
+ * Tab label text
11
+ */
12
+ children: React.ReactNode;
13
+ /**
14
+ * Icon displayed before the label
15
+ */
16
+ icon?: IconProps['name'];
17
+ /**
18
+ * Whether the tab is disabled
19
+ * @default false
20
+ */
21
+ disabled?: boolean;
22
+ /**
23
+ * Additional class name(s)
24
+ */
25
+ className?: string;
26
+ }
27
+ export declare const TabsTrigger: {
28
+ (props: TabsTriggerProps): import("react/jsx-runtime").JSX.Element;
29
+ displayName: string;
30
+ };
31
+ export default TabsTrigger;
@@ -0,0 +1,43 @@
1
+ import { jsxs as p, jsx as f } from "react/jsx-runtime";
2
+ import T from "../../../../../../external/classnames/index.es.js";
3
+ import { Icon as u } from "../../../base/icon/icon.es.js";
4
+ import s from "../tabs.module.scss.es.js";
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);
13
+ };
14
+ return /* @__PURE__ */ p(
15
+ "button",
16
+ {
17
+ "data-name": "tabs-trigger",
18
+ id: e,
19
+ role: "tab",
20
+ type: "button",
21
+ "aria-selected": r,
22
+ "aria-controls": `${e}-panel`,
23
+ tabIndex: r ? 0 : -1,
24
+ disabled: t,
25
+ className: T(
26
+ s["tedi-tabs__trigger"],
27
+ { [s["tedi-tabs__trigger--selected"]]: r },
28
+ { [s["tedi-tabs__trigger--disabled"]]: t },
29
+ l
30
+ ),
31
+ onClick: m,
32
+ onKeyDown: b,
33
+ children: [
34
+ a && /* @__PURE__ */ f(u, { name: a, size: 18, color: "inherit" }),
35
+ c
36
+ ]
37
+ }
38
+ );
39
+ };
40
+ x.displayName = "TabsTrigger";
41
+ export {
42
+ x as TabsTrigger
43
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("react/jsx-runtime"),q=require("../../../../../external/classnames/index.cjs.js"),o=require("react"),g=require("./tabs.module.scss.cjs.js"),m=require("./tabs-content/tabs-content.cjs.js"),f=require("./tabs-context.cjs.js"),v=require("./tabs-list/tabs-list.cjs.js"),x=require("./tabs-trigger/tabs-trigger.cjs.js"),e=i=>{const{children:u,value:s,defaultValue:c,onChange:t,className:l}=i,[b,d]=o.useState(c||""),r=s??b,T=o.useCallback(a=>{a!==r&&(s===void 0&&d(a),t==null||t(a))},[s,r,t]);return n.jsx(f.TabsContext.Provider,{value:{currentTab:r,setCurrentTab:T},children:n.jsx("div",{"data-name":"tabs",className:q.default(g.default["tedi-tabs"],l),children:u})})};e.displayName="Tabs";e.List=v.TabsList;e.Trigger=x.TabsTrigger;e.Content=m.TabsContent;exports.Tabs=e;
@@ -0,0 +1,40 @@
1
+ import { default as React } from 'react';
2
+ export interface TabsProps {
3
+ /**
4
+ * Tabs content — should include Tabs.List and Tabs.Content elements
5
+ */
6
+ children: React.ReactNode;
7
+ /**
8
+ * Controlled active tab id. Use together with onChange.
9
+ */
10
+ value?: string;
11
+ /**
12
+ * Default active tab id for uncontrolled usage.
13
+ */
14
+ defaultValue?: string;
15
+ /**
16
+ * Callback fired when the active tab changes
17
+ */
18
+ onChange?: (tabId: string) => void;
19
+ /**
20
+ * Additional class name(s)
21
+ */
22
+ className?: string;
23
+ }
24
+ export declare const Tabs: {
25
+ (props: TabsProps): import("react/jsx-runtime").JSX.Element;
26
+ displayName: string;
27
+ List: {
28
+ (props: import('./tabs-list/tabs-list').TabsListProps): import("react/jsx-runtime").JSX.Element;
29
+ displayName: string;
30
+ };
31
+ Trigger: {
32
+ (props: import('./tabs-trigger/tabs-trigger').TabsTriggerProps): import("react/jsx-runtime").JSX.Element;
33
+ displayName: string;
34
+ };
35
+ Content: {
36
+ (props: import('./tabs-content/tabs-content').TabsContentProps): import("react/jsx-runtime").JSX.Element | null;
37
+ displayName: string;
38
+ };
39
+ };
40
+ export default Tabs;
@@ -0,0 +1,24 @@
1
+ import { jsx as s } from "react/jsx-runtime";
2
+ import u from "../../../../../external/classnames/index.es.js";
3
+ import m from "react";
4
+ import d from "./tabs.module.scss.es.js";
5
+ import { TabsContent as p } from "./tabs-content/tabs-content.es.js";
6
+ import { TabsContext as v } from "./tabs-context.es.js";
7
+ import { TabsList as C } from "./tabs-list/tabs-list.es.js";
8
+ import { TabsTrigger as N } from "./tabs-trigger/tabs-trigger.es.js";
9
+ const r = (l) => {
10
+ const { children: n, value: e, defaultValue: i, onChange: t, className: c } = l, [b, T] = m.useState(i || ""), a = e ?? b, f = m.useCallback(
11
+ (o) => {
12
+ o !== a && (e === void 0 && T(o), t == null || t(o));
13
+ },
14
+ [e, a, t]
15
+ );
16
+ return /* @__PURE__ */ s(v.Provider, { value: { currentTab: a, setCurrentTab: f }, children: /* @__PURE__ */ s("div", { "data-name": "tabs", className: u(d["tedi-tabs"], c), children: n }) });
17
+ };
18
+ r.displayName = "Tabs";
19
+ r.List = C;
20
+ r.Trigger = N;
21
+ r.Content = p;
22
+ export {
23
+ r as Tabs
24
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-tabs__list-wrapper":"tedi-tabs__list-wrapper-836dbadb","tedi-tabs__list-wrapper--scroll-fade-left":"tedi-tabs__list-wrapper--scroll-fade-left-0e5e3c75","tedi-tabs__list-wrapper--scroll-fade-right":"tedi-tabs__list-wrapper--scroll-fade-right-c29132bd","tedi-tabs__list":"tedi-tabs__list-59580c81","tedi-tabs__list--overflow":"tedi-tabs__list--overflow-31407fe9","tedi-tabs__trigger":"tedi-tabs__trigger-6d66998e","tedi-tabs__trigger--selected":"tedi-tabs__trigger--selected-e4ee99cf","tedi-tabs__list--scroll":"tedi-tabs__list--scroll-04ebd4e1","tedi-tabs__trigger--disabled":"tedi-tabs__trigger--disabled-d33c941d","tedi-tabs__content":"tedi-tabs__content-55f3ce06","tedi-tabs__more-wrapper":"tedi-tabs__more-wrapper-c6ff4efd","tedi-tabs__more-btn":"tedi-tabs__more-btn-bfea5f30"};exports.default=t;
@@ -0,0 +1,17 @@
1
+ const t = {
2
+ "tedi-tabs__list-wrapper": "tedi-tabs__list-wrapper-836dbadb",
3
+ "tedi-tabs__list-wrapper--scroll-fade-left": "tedi-tabs__list-wrapper--scroll-fade-left-0e5e3c75",
4
+ "tedi-tabs__list-wrapper--scroll-fade-right": "tedi-tabs__list-wrapper--scroll-fade-right-c29132bd",
5
+ "tedi-tabs__list": "tedi-tabs__list-59580c81",
6
+ "tedi-tabs__list--overflow": "tedi-tabs__list--overflow-31407fe9",
7
+ "tedi-tabs__trigger": "tedi-tabs__trigger-6d66998e",
8
+ "tedi-tabs__trigger--selected": "tedi-tabs__trigger--selected-e4ee99cf",
9
+ "tedi-tabs__list--scroll": "tedi-tabs__list--scroll-04ebd4e1",
10
+ "tedi-tabs__trigger--disabled": "tedi-tabs__trigger--disabled-d33c941d",
11
+ "tedi-tabs__content": "tedi-tabs__content-55f3ce06",
12
+ "tedi-tabs__more-wrapper": "tedi-tabs__more-wrapper-c6ff4efd",
13
+ "tedi-tabs__more-btn": "tedi-tabs__more-btn-bfea5f30"
14
+ };
15
+ export {
16
+ t as default
17
+ };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),n=require("../dropdown-context.cjs.js"),c=({children:e})=>{const{refs:r,getReferenceProps:o}=n.useDropdownContext();return t.cloneElement(e,o({ref:r.setReference}))};exports.DropdownTrigger=c;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("../../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),c=require("react"),f=require("../dropdown-context.cjs.js"),g=({children:e})=>{const{refs:r,getReferenceProps:o}=f.useDropdownContext(),t=e.ref??null,n=s.useMergeRefs([r.setReference,t]);return c.cloneElement(e,o({...e.props,ref:n}))};exports.DropdownTrigger=g;
@@ -1,14 +1,16 @@
1
- import { cloneElement as t } from "react";
2
- import { useDropdownContext as n } from "../dropdown-context.es.js";
3
- const s = ({ children: e }) => {
4
- const { refs: r, getReferenceProps: o } = n();
5
- return t(
1
+ import { useMergeRefs as n } from "../../../../../../external/@floating-ui/react/dist/floating-ui.react.es.js";
2
+ import { cloneElement as s } from "react";
3
+ import { useDropdownContext as p } from "../dropdown-context.es.js";
4
+ const R = ({ children: e }) => {
5
+ const { refs: r, getReferenceProps: o } = p(), t = e.ref ?? null, f = n([r.setReference, t]);
6
+ return s(
6
7
  e,
7
8
  o({
8
- ref: r.setReference
9
+ ...e.props,
10
+ ref: f
9
11
  })
10
12
  );
11
13
  };
12
14
  export {
13
- s as DropdownTrigger
15
+ R as DropdownTrigger
14
16
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),q=require("../../../../../external/classnames/index.cjs.js"),x=require("react"),S=require("../../base/icon/icon.cjs.js"),e=require("./status-badge.module.scss.cjs.js"),j=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),n=x.forwardRef((r,l)=>{const{getCurrentBreakpointProps:c}=j.useBreakpointProps(r.defaultServerBreakpoint),{color:u="neutral",variant:g="filled",size:f="default",children:a,className:b,title:o,status:s,icon:i,id:m,role:t,...v}=c(r),p=o?"abbr":"div",B=q.default(e.default["tedi-status-badge"],e.default[`tedi-status-badge--variant-${g}`],e.default[`tedi-status-badge--color-${u}`],s&&e.default["tedi-status-badge--status"],s&&e.default[`tedi-status-badge--status-${s}`],f==="large"&&e.default["tedi-status-badge--large"],i&&!a&&e.default["tedi-status-badge__icon-only"],b),_=t==="alert"?"assertive":t==="status"?"polite":void 0;return d.jsxs(p,{ref:l,className:B,id:m,title:o,role:t,"aria-live":t?_:void 0,...v,children:[i&&d.jsx(S.Icon,{name:i,color:"inherit",size:16,className:e.default[`tedi-status-badge__icon-${u}`]}),a&&d.jsx("span",{className:e.default["tedi-status-badge__inner-text"],children:a})]})});n.displayName="StatusBadge";exports.StatusBadge=n;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react/jsx-runtime"),x=require("../../../../../external/classnames/index.cjs.js"),S=require("react"),_=require("../../base/icon/icon.cjs.js"),j=require("../status-indicator/status-indicator.cjs.js"),e=require("./status-badge.module.scss.cjs.js"),h=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),l=S.forwardRef((i,c)=>{const{getCurrentBreakpointProps:g}=h.useBreakpointProps(i.defaultServerBreakpoint),{color:o="neutral",variant:f="filled",size:d="default",children:s,className:b,title:n,status:u,icon:r,id:p,role:t,...m}=g(i),v=n?"abbr":"div",B=x.default(e.default["tedi-status-badge"],e.default[`tedi-status-badge--variant-${f}`],e.default[`tedi-status-badge--color-${o}`],d==="large"&&e.default["tedi-status-badge--large"],r&&!s&&e.default["tedi-status-badge__icon-only"],b),q=t==="alert"?"assertive":t==="status"?"polite":void 0;return a.jsxs(v,{ref:c,className:B,id:p,title:n,role:t,"aria-live":t?q:void 0,...m,children:[u&&a.jsx(j.StatusIndicator,{type:u,size:d==="large"?"lg":"sm",hasBorder:!0,position:"top-right"}),r&&a.jsx(_.Icon,{name:r,color:"inherit",size:16,className:e.default[`tedi-status-badge__icon-${o}`]}),s&&a.jsx("span",{className:e.default["tedi-status-badge__inner-text"],children:s})]})});l.displayName="StatusBadge";exports.StatusBadge=l;
@@ -1,50 +1,50 @@
1
- import { jsxs as B, jsx as l } from "react/jsx-runtime";
1
+ import { jsxs as B, jsx as r } from "react/jsx-runtime";
2
2
  import N from "../../../../../external/classnames/index.es.js";
3
3
  import { forwardRef as _ } from "react";
4
- import { Icon as x } from "../../base/icon/icon.es.js";
4
+ import { Icon as h } from "../../base/icon/icon.es.js";
5
+ import { StatusIndicator as x } from "../status-indicator/status-indicator.es.js";
5
6
  import t from "./status-badge.module.scss.es.js";
6
- import { useBreakpointProps as $ } from "../../../helpers/hooks/use-breakpoint-props.es.js";
7
- const h = _((r, n) => {
8
- const { getCurrentBreakpointProps: u } = $(r.defaultServerBreakpoint), {
7
+ import { useBreakpointProps as y } from "../../../helpers/hooks/use-breakpoint-props.es.js";
8
+ const S = _((i, m) => {
9
+ const { getCurrentBreakpointProps: c } = y(i.defaultServerBreakpoint), {
9
10
  color: o = "neutral",
10
- variant: c = "filled",
11
- size: m = "default",
11
+ variant: u = "filled",
12
+ size: d = "default",
12
13
  children: a,
13
14
  className: g,
14
- title: d,
15
- status: s,
16
- icon: i,
15
+ title: l,
16
+ status: n,
17
+ icon: s,
17
18
  id: p,
18
19
  role: e,
19
- ...b
20
- } = u(r), f = d ? "abbr" : "div", v = N(
20
+ ...f
21
+ } = c(i), b = l ? "abbr" : "div", v = N(
21
22
  t["tedi-status-badge"],
22
- t[`tedi-status-badge--variant-${c}`],
23
+ t[`tedi-status-badge--variant-${u}`],
23
24
  t[`tedi-status-badge--color-${o}`],
24
- s && t["tedi-status-badge--status"],
25
- s && t[`tedi-status-badge--status-${s}`],
26
- m === "large" && t["tedi-status-badge--large"],
27
- i && !a && t["tedi-status-badge__icon-only"],
25
+ d === "large" && t["tedi-status-badge--large"],
26
+ s && !a && t["tedi-status-badge__icon-only"],
28
27
  g
29
28
  );
30
29
  return /* @__PURE__ */ B(
31
- f,
30
+ b,
32
31
  {
33
- ref: n,
32
+ ref: m,
34
33
  className: v,
35
34
  id: p,
36
- title: d,
35
+ title: l,
37
36
  role: e,
38
37
  "aria-live": e ? e === "alert" ? "assertive" : e === "status" ? "polite" : void 0 : void 0,
39
- ...b,
38
+ ...f,
40
39
  children: [
41
- i && /* @__PURE__ */ l(x, { name: i, color: "inherit", size: 16, className: t[`tedi-status-badge__icon-${o}`] }),
42
- a && /* @__PURE__ */ l("span", { className: t["tedi-status-badge__inner-text"], children: a })
40
+ n && /* @__PURE__ */ r(x, { type: n, size: d === "large" ? "lg" : "sm", hasBorder: !0, position: "top-right" }),
41
+ s && /* @__PURE__ */ r(h, { name: s, color: "inherit", size: 16, className: t[`tedi-status-badge__icon-${o}`] }),
42
+ a && /* @__PURE__ */ r("span", { className: t["tedi-status-badge__inner-text"], children: a })
43
43
  ]
44
44
  }
45
45
  );
46
46
  });
47
- h.displayName = "StatusBadge";
47
+ S.displayName = "StatusBadge";
48
48
  export {
49
- h as StatusBadge
49
+ S as StatusBadge
50
50
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-status-badge":"tedi-status-badge-4e27f642","tedi-status-badge__inner-text":"tedi-status-badge__inner-text-03b0bc82","tedi-status-badge--large":"tedi-status-badge--large-5f2dbfb5","tedi-status-badge--variant-filled":"tedi-status-badge--variant-filled-f4539af1","tedi-status-badge--color-neutral":"tedi-status-badge--color-neutral-d01344a8","tedi-status-badge--color-brand":"tedi-status-badge--color-brand-b771d71c","tedi-status-badge--color-accent":"tedi-status-badge--color-accent-c08bc9ef","tedi-status-badge--color-success":"tedi-status-badge--color-success-1fbe69c4","tedi-status-badge--color-danger":"tedi-status-badge--color-danger-5fce5f83","tedi-status-badge--color-warning":"tedi-status-badge--color-warning-fa9d7c9b","tedi-status-badge--color-transparent":"tedi-status-badge--color-transparent-e6953202","tedi-status-badge--variant-filled-bordered":"tedi-status-badge--variant-filled-bordered-2dd34026","tedi-status-badge--variant-bordered":"tedi-status-badge--variant-bordered-1a37eb74","tedi-status-badge--status":"tedi-status-badge--status-fc03170a","tedi-badge--large":"tedi-badge--large-9671d5cc","tedi-status-badge--status-inactive":"tedi-status-badge--status-inactive-63b8ced2","tedi-status-badge--status-success":"tedi-status-badge--status-success-5c659818","tedi-status-badge--status-danger":"tedi-status-badge--status-danger-f02c312f","tedi-status-badge--status-warning":"tedi-status-badge--status-warning-28e8b925","tedi-status-badge__icon-only":"tedi-status-badge__icon-only-40501cec"};exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-status-badge":"tedi-status-badge-4e27f642","tedi-status-badge__inner-text":"tedi-status-badge__inner-text-03b0bc82","tedi-status-badge--large":"tedi-status-badge--large-5f2dbfb5","tedi-status-badge--variant-filled":"tedi-status-badge--variant-filled-f4539af1","tedi-status-badge--color-neutral":"tedi-status-badge--color-neutral-d01344a8","tedi-status-badge--color-brand":"tedi-status-badge--color-brand-b771d71c","tedi-status-badge--color-accent":"tedi-status-badge--color-accent-c08bc9ef","tedi-status-badge--color-success":"tedi-status-badge--color-success-1fbe69c4","tedi-status-badge--color-danger":"tedi-status-badge--color-danger-5fce5f83","tedi-status-badge--color-warning":"tedi-status-badge--color-warning-fa9d7c9b","tedi-status-badge--color-transparent":"tedi-status-badge--color-transparent-e6953202","tedi-status-badge--variant-filled-bordered":"tedi-status-badge--variant-filled-bordered-2dd34026","tedi-status-badge--variant-bordered":"tedi-status-badge--variant-bordered-1a37eb74","tedi-status-badge__icon-only":"tedi-status-badge__icon-only-40501cec"};exports.default=t;
@@ -12,12 +12,6 @@ const t = {
12
12
  "tedi-status-badge--color-transparent": "tedi-status-badge--color-transparent-e6953202",
13
13
  "tedi-status-badge--variant-filled-bordered": "tedi-status-badge--variant-filled-bordered-2dd34026",
14
14
  "tedi-status-badge--variant-bordered": "tedi-status-badge--variant-bordered-1a37eb74",
15
- "tedi-status-badge--status": "tedi-status-badge--status-fc03170a",
16
- "tedi-badge--large": "tedi-badge--large-9671d5cc",
17
- "tedi-status-badge--status-inactive": "tedi-status-badge--status-inactive-63b8ced2",
18
- "tedi-status-badge--status-success": "tedi-status-badge--status-success-5c659818",
19
- "tedi-status-badge--status-danger": "tedi-status-badge--status-danger-f02c312f",
20
- "tedi-status-badge--status-warning": "tedi-status-badge--status-warning-28e8b925",
21
15
  "tedi-status-badge__icon-only": "tedi-status-badge__icon-only-40501cec"
22
16
  };
23
17
  export {
@@ -0,0 +1 @@
1
+ export * from './status-indicator';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("react/jsx-runtime"),n=require("../../../../../external/classnames/index.cjs.js"),t=require("./status-indicator.module.scss.cjs.js"),a=e=>{const{type:s="success",size:i="sm",hasBorder:d=!1,position:r="default",className:u}=e;return o.jsx("span",{"data-name":"status-indicator",className:n.default(t.default["tedi-status-indicator"],t.default[`tedi-status-indicator--${s}`],t.default[`tedi-status-indicator--${i}`],{[t.default["tedi-status-indicator--bordered"]]:d},{[t.default["tedi-status-indicator--top-right"]]:r==="top-right"},u),role:"img","aria-hidden":"true"})};a.displayName="StatusIndicator";exports.StatusIndicator=a;
@@ -0,0 +1,36 @@
1
+ export type StatusIndicatorType = 'success' | 'danger' | 'warning' | 'inactive';
2
+ export type StatusIndicatorSize = 'sm' | 'lg';
3
+ export type StatusIndicatorPosition = 'default' | 'top-right';
4
+ export interface StatusIndicatorProps {
5
+ /**
6
+ * The status type, which determines the indicator color.
7
+ * @default 'success'
8
+ */
9
+ type?: StatusIndicatorType;
10
+ /**
11
+ * The size of the indicator.
12
+ * @default 'sm'
13
+ */
14
+ size?: StatusIndicatorSize;
15
+ /**
16
+ * Whether the indicator has a white border ring.
17
+ * @default false
18
+ */
19
+ hasBorder?: boolean;
20
+ /**
21
+ * Controls positioning of the indicator.
22
+ * - `'default'` — inline, no absolute positioning
23
+ * - `'top-right'` — absolutely positioned at the top-right corner of the parent
24
+ * @default 'default'
25
+ */
26
+ position?: StatusIndicatorPosition;
27
+ /**
28
+ * Additional class name(s)
29
+ */
30
+ className?: string;
31
+ }
32
+ export declare const StatusIndicator: {
33
+ (props: StatusIndicatorProps): JSX.Element;
34
+ displayName: string;
35
+ };
36
+ export default StatusIndicator;
@@ -0,0 +1,26 @@
1
+ import { jsx as d } from "react/jsx-runtime";
2
+ import c from "../../../../../external/classnames/index.es.js";
3
+ import t from "./status-indicator.module.scss.es.js";
4
+ const n = (s) => {
5
+ const { type: a = "success", size: i = "sm", hasBorder: r = !1, position: e = "default", className: o } = s;
6
+ return /* @__PURE__ */ d(
7
+ "span",
8
+ {
9
+ "data-name": "status-indicator",
10
+ className: c(
11
+ t["tedi-status-indicator"],
12
+ t[`tedi-status-indicator--${a}`],
13
+ t[`tedi-status-indicator--${i}`],
14
+ { [t["tedi-status-indicator--bordered"]]: r },
15
+ { [t["tedi-status-indicator--top-right"]]: e === "top-right" },
16
+ o
17
+ ),
18
+ role: "img",
19
+ "aria-hidden": "true"
20
+ }
21
+ );
22
+ };
23
+ n.displayName = "StatusIndicator";
24
+ export {
25
+ n as StatusIndicator
26
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-status-indicator":"tedi-status-indicator-529cc6cb","tedi-status-indicator--top-right":"tedi-status-indicator--top-right-96ed4bd8","tedi-status-indicator--sm":"tedi-status-indicator--sm-d5cb39c6","tedi-status-indicator--lg":"tedi-status-indicator--lg-90afc96a","tedi-status-indicator--bordered":"tedi-status-indicator--bordered-31bab75a","tedi-status-indicator--success":"tedi-status-indicator--success-c27edb94","tedi-status-indicator--danger":"tedi-status-indicator--danger-d3709ad6","tedi-status-indicator--warning":"tedi-status-indicator--warning-fb364219","tedi-status-indicator--inactive":"tedi-status-indicator--inactive-258c6a4f"};exports.default=t;
@@ -0,0 +1,14 @@
1
+ const t = {
2
+ "tedi-status-indicator": "tedi-status-indicator-529cc6cb",
3
+ "tedi-status-indicator--top-right": "tedi-status-indicator--top-right-96ed4bd8",
4
+ "tedi-status-indicator--sm": "tedi-status-indicator--sm-d5cb39c6",
5
+ "tedi-status-indicator--lg": "tedi-status-indicator--lg-90afc96a",
6
+ "tedi-status-indicator--bordered": "tedi-status-indicator--bordered-31bab75a",
7
+ "tedi-status-indicator--success": "tedi-status-indicator--success-c27edb94",
8
+ "tedi-status-indicator--danger": "tedi-status-indicator--danger-d3709ad6",
9
+ "tedi-status-indicator--warning": "tedi-status-indicator--warning-fb364219",
10
+ "tedi-status-indicator--inactive": "tedi-status-indicator--inactive-258c6a4f"
11
+ };
12
+ export {
13
+ t as default
14
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),p=(v={})=>{const{direction:f="vertical",onScrollToStart:S,onScrollToEnd:d}=v,[C,E]=t.useState(!1),[k,z]=t.useState(!1),w=t.useRef(null),r=t.useRef(null),s=t.useRef(S),n=t.useRef(d),R=t.useRef(!1),b=t.useRef(!1);s.current=S,n.current=d;const c=t.useCallback(e=>{var h,g;let l,o,u;f==="horizontal"?(l=e.scrollLeft,o=e.scrollWidth,u=e.clientWidth):(l=e.scrollTop,o=e.scrollHeight,u=e.clientHeight);const a=l<=1,i=Math.abs(o-l-u)<=1;E(!a),z(!i),a&&!R.current&&((h=s.current)==null||h.call(s)),i&&!b.current&&((g=n.current)==null||g.call(n)),R.current=a,b.current=i},[f]),F=t.useCallback(e=>{c(e.currentTarget)},[c]),T=t.useCallback(e=>{r.current&&(r.current.disconnect(),r.current=null),w.current=e,e&&(c(e),r.current=new ResizeObserver(()=>{c(e)}),r.current.observe(e))},[c]);return t.useEffect(()=>()=>{var e;(e=r.current)==null||e.disconnect()},[]),{scrollRef:T,canScrollStart:C,canScrollEnd:k,handleScroll:F}};exports.useScrollFade=p;
@@ -0,0 +1,35 @@
1
+ export interface UseScrollFadeOptions {
2
+ /**
3
+ * Scroll direction to track
4
+ * @default 'vertical'
5
+ */
6
+ direction?: 'vertical' | 'horizontal';
7
+ /**
8
+ * Called when element is scrolled to start (top or left)
9
+ */
10
+ onScrollToStart?: () => void;
11
+ /**
12
+ * Called when element is scrolled to end (bottom or right)
13
+ */
14
+ onScrollToEnd?: () => void;
15
+ }
16
+ export interface UseScrollFadeReturn {
17
+ /**
18
+ * Callback ref to attach to the scrollable element.
19
+ * Sets up ResizeObserver and initial measurement.
20
+ */
21
+ scrollRef: React.RefCallback<HTMLElement>;
22
+ /**
23
+ * Whether content can be scrolled towards the start (top or left)
24
+ */
25
+ canScrollStart: boolean;
26
+ /**
27
+ * Whether content can be scrolled towards the end (bottom or right)
28
+ */
29
+ canScrollEnd: boolean;
30
+ /**
31
+ * Scroll event handler to attach to the scrollable element's onScroll
32
+ */
33
+ handleScroll: React.UIEventHandler<HTMLElement>;
34
+ }
35
+ export declare const useScrollFade: (options?: UseScrollFadeOptions) => UseScrollFadeReturn;
@@ -0,0 +1,34 @@
1
+ import { useState as z, useRef as c, useCallback as f, useEffect as H } from "react";
2
+ const W = (g = {}) => {
3
+ const { direction: S = "vertical", onScrollToStart: d, onScrollToEnd: h } = g, [p, w] = z(!1), [C, k] = z(!1), m = c(null), r = c(null), n = c(d), s = c(h), b = c(!1), E = c(!1);
4
+ n.current = d, s.current = h;
5
+ const e = f(
6
+ (t) => {
7
+ var R, v;
8
+ let l, o, a;
9
+ S === "horizontal" ? (l = t.scrollLeft, o = t.scrollWidth, a = t.clientWidth) : (l = t.scrollTop, o = t.scrollHeight, a = t.clientHeight);
10
+ const u = l <= 1, i = Math.abs(o - l - a) <= 1;
11
+ w(!u), k(!i), u && !b.current && ((R = n.current) == null || R.call(n)), i && !E.current && ((v = s.current) == null || v.call(s)), b.current = u, E.current = i;
12
+ },
13
+ [S]
14
+ ), A = f(
15
+ (t) => {
16
+ e(t.currentTarget);
17
+ },
18
+ [e]
19
+ ), F = f(
20
+ (t) => {
21
+ r.current && (r.current.disconnect(), r.current = null), m.current = t, t && (e(t), r.current = new ResizeObserver(() => {
22
+ e(t);
23
+ }), r.current.observe(t));
24
+ },
25
+ [e]
26
+ );
27
+ return H(() => () => {
28
+ var t;
29
+ (t = r.current) == null || t.disconnect();
30
+ }, []), { scrollRef: F, canScrollStart: p, canScrollEnd: C, handleScroll: A };
31
+ };
32
+ export {
33
+ W as useScrollFade
34
+ };
@@ -6,3 +6,4 @@ export * from './hooks/use-scroll';
6
6
  export * from './hooks/use-is-touch-device';
7
7
  export * from './hooks/use-file-upload';
8
8
  export * from './hooks/use-what-input';
9
+ export * from './hooks/use-scroll-fade';
@@ -11,6 +11,7 @@ export * from './components/loaders/spinner/spinner';
11
11
  export * from './components/loaders/skeleton';
12
12
  export * from './components/tags/tag/tag';
13
13
  export * from './components/tags/status-badge/status-badge';
14
+ export * from './components/tags/status-indicator/status-indicator';
14
15
  export * from './components/buttons/closing-button/closing-button';
15
16
  export * from './components/buttons/button/button';
16
17
  export * from './components/buttons/info-button/info-button';
@@ -24,6 +25,7 @@ export * from './components/notifications/toast/toast';
24
25
  export * from './components/cards/card';
25
26
  export * from './components/navigation/hash-trigger/hash-trigger';
26
27
  export * from './components/navigation/link/link';
28
+ export * from './components/navigation/tabs';
27
29
  export * from './components/form/textfield/textfield';
28
30
  export * from './components/form/textarea/textarea';
29
31
  export * from './components/form/number-field/number-field';