@tedi-design-system/react 19.1.0-rc.2 → 19.1.0-rc.20

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 (184) hide show
  1. package/DESIGN.md +308 -0
  2. package/README.md +28 -0
  3. package/_virtual/index.es13.js +2 -2
  4. package/_virtual/index.es14.js +2 -2
  5. package/bundle-stats.html +1 -1
  6. package/community.cjs.js +1 -1
  7. package/community.es.js +215 -223
  8. package/component.manifest.json +1234 -0
  9. package/external/@floating-ui/core/dist/floating-ui.core.es.js +1 -1
  10. package/external/@floating-ui/dom/dist/floating-ui.dom.es.js +2 -2
  11. package/external/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js +5 -5
  12. package/external/@mui/x-date-pickers/DatePicker/shared.es.js +1 -1
  13. package/external/@mui/x-date-pickers/DateTimePicker/shared.es.js +1 -1
  14. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  15. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  16. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  17. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  18. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  19. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  20. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  21. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  22. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  23. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  24. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  25. package/external/prop-types/external/react-is/index.es.js +1 -1
  26. package/external/react-is/index.cjs.js +1 -1
  27. package/external/react-is/index.es.js +1 -1
  28. package/external/toposort/index.cjs.js +1 -1
  29. package/external/toposort/index.es.js +1 -1
  30. package/index.css +1 -1
  31. package/package.json +3 -3
  32. package/src/community/components/accordion/accordion.cjs.js +1 -1
  33. package/src/community/components/accordion/accordion.es.js +14 -9
  34. package/src/community/components/card/card-notification/card-notification.cjs.js +1 -1
  35. package/src/community/components/card/card-notification/card-notification.es.js +10 -8
  36. package/src/community/components/dock-panel/dock-panel.cjs.js +2 -0
  37. package/src/community/components/dock-panel/dock-panel.d.ts +110 -0
  38. package/src/community/components/dock-panel/dock-panel.es.js +138 -0
  39. package/src/community/components/dock-panel/dock-panel.module.scss.cjs.js +1 -0
  40. package/src/community/components/dock-panel/dock-panel.module.scss.es.js +18 -0
  41. package/src/community/components/dropdown/dropdown.cjs.js +1 -1
  42. package/src/community/components/dropdown/dropdown.es.js +34 -32
  43. package/src/community/components/form/category-search/category-search.cjs.js +1 -0
  44. package/src/community/components/form/category-search/category-search.d.ts +9 -0
  45. package/src/community/components/form/category-search/category-search.es.js +297 -0
  46. package/src/community/components/form/category-search/category-search.module.scss.cjs.js +1 -0
  47. package/src/community/components/form/category-search/category-search.module.scss.es.js +21 -0
  48. package/src/community/components/form/category-search/category-search.types.d.ts +162 -0
  49. package/src/community/components/form/category-search/define-category-search-category.cjs.js +1 -0
  50. package/src/community/components/form/category-search/define-category-search-category.d.ts +7 -0
  51. package/src/community/components/form/category-search/define-category-search-category.es.js +25 -0
  52. package/src/community/components/form/category-search/index.d.ts +3 -0
  53. package/src/community/components/form/category-search/use-category-search.cjs.js +1 -0
  54. package/src/community/components/form/category-search/use-category-search.d.ts +17 -0
  55. package/src/community/components/form/category-search/use-category-search.es.js +64 -0
  56. package/src/community/components/form/file-upload/file-upload.cjs.js +1 -1
  57. package/src/community/components/form/file-upload/file-upload.es.js +43 -41
  58. package/src/community/components/form/pickers/calendar/calendar.cjs.js +1 -1
  59. package/src/community/components/form/pickers/calendar/calendar.es.js +41 -39
  60. package/src/community/components/form/pickers/timepicker/timepicker.cjs.js +1 -1
  61. package/src/community/components/form/pickers/timepicker/timepicker.es.js +33 -31
  62. package/src/community/components/form/toggle/toggle.cjs.js +1 -1
  63. package/src/community/components/form/toggle/toggle.es.js +30 -28
  64. package/src/community/components/map-components/base-map-selection/base-map-option.cjs.js +1 -1
  65. package/src/community/components/map-components/base-map-selection/base-map-option.d.ts +8 -5
  66. package/src/community/components/map-components/base-map-selection/base-map-option.es.js +63 -65
  67. package/src/community/components/map-components/base-map-selection/base-map-selection.cjs.js +1 -1
  68. package/src/community/components/map-components/base-map-selection/base-map-selection.d.ts +1 -4
  69. package/src/community/components/map-components/base-map-selection/base-map-selection.es.js +55 -55
  70. package/src/community/components/map-components/carousel/carousel.cjs.js +1 -1
  71. package/src/community/components/map-components/carousel/carousel.es.js +19 -17
  72. package/src/community/components/map-components/map-button/map-button.cjs.js +1 -1
  73. package/src/community/components/map-components/map-button/map-button.d.ts +12 -4
  74. package/src/community/components/map-components/map-button/map-button.es.js +43 -40
  75. package/src/community/components/map-components/map-dropdown/map-dropdown.cjs.js +1 -1
  76. package/src/community/components/map-components/map-dropdown/map-dropdown.es.js +51 -49
  77. package/src/community/components/status/status.cjs.js +1 -1
  78. package/src/community/components/status/status.es.js +14 -12
  79. package/src/community/components/stepper/stepper.cjs.js +1 -1
  80. package/src/community/components/stepper/stepper.es.js +33 -31
  81. package/src/community/components/table/table.cjs.js +1 -1
  82. package/src/community/components/table/table.es.js +9 -9
  83. package/src/community/components/table-of-contents/table-of-contents.cjs.js +1 -1
  84. package/src/community/components/table-of-contents/table-of-contents.es.js +21 -19
  85. package/src/community/components/tabs/tabs/tabs.cjs.js +1 -1
  86. package/src/community/components/tabs/tabs/tabs.es.js +29 -27
  87. package/src/community/components/vertical-stepper/vertical-stepper.cjs.js +1 -1
  88. package/src/community/components/vertical-stepper/vertical-stepper.es.js +8 -6
  89. package/src/community/deprecated-exports.cjs.js +1 -0
  90. package/src/community/deprecated-exports.d.ts +19 -0
  91. package/src/community/deprecated-exports.es.js +112 -0
  92. package/src/community/index.d.ts +3 -0
  93. package/src/tedi/components/content/card/card.d.ts +4 -0
  94. package/src/tedi/components/content/card/card.module.scss.cjs.js +1 -1
  95. package/src/tedi/components/content/card/card.module.scss.es.js +3 -2
  96. package/src/tedi/components/content/carousel/carousel.cjs.js +1 -1
  97. package/src/tedi/components/content/carousel/carousel.d.ts +5 -0
  98. package/src/tedi/components/content/carousel/carousel.es.js +20 -20
  99. package/src/tedi/components/content/carousel/use-carousel.cjs.js +1 -1
  100. package/src/tedi/components/content/carousel/use-carousel.d.ts +1 -1
  101. package/src/tedi/components/content/carousel/use-carousel.es.js +127 -127
  102. package/src/tedi/components/content/table-card/index.d.ts +1 -0
  103. package/src/tedi/components/content/table-card/table-card.cjs.js +1 -0
  104. package/src/tedi/components/content/table-card/table-card.d.ts +131 -0
  105. package/src/tedi/components/content/table-card/table-card.es.js +206 -0
  106. package/src/tedi/components/content/table-card/table-card.module.scss.cjs.js +1 -0
  107. package/src/tedi/components/content/table-card/table-card.module.scss.es.js +18 -0
  108. package/src/tedi/components/content/text-group/text-group-list/text-group-list.cjs.js +1 -1
  109. package/src/tedi/components/content/text-group/text-group-list/text-group-list.d.ts +42 -0
  110. package/src/tedi/components/content/text-group/text-group-list/text-group-list.es.js +41 -23
  111. package/src/tedi/components/content/text-group/text-group.cjs.js +1 -1
  112. package/src/tedi/components/content/text-group/text-group.d.ts +10 -0
  113. package/src/tedi/components/content/text-group/text-group.es.js +14 -13
  114. package/src/tedi/components/content/text-group/text-group.module.scss.cjs.js +1 -1
  115. package/src/tedi/components/content/text-group/text-group.module.scss.es.js +5 -1
  116. package/src/tedi/components/filter/filter/filter.cjs.js +1 -1
  117. package/src/tedi/components/filter/filter/filter.d.ts +5 -0
  118. package/src/tedi/components/filter/filter/filter.es.js +154 -144
  119. package/src/tedi/components/filter/filter/filter.module.scss.cjs.js +1 -1
  120. package/src/tedi/components/filter/filter/filter.module.scss.es.js +2 -1
  121. package/src/tedi/components/form/date-field/date-field-helpers.cjs.js +1 -1
  122. package/src/tedi/components/form/date-field/date-field-helpers.d.ts +12 -19
  123. package/src/tedi/components/form/date-field/date-field-helpers.es.js +27 -21
  124. package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
  125. package/src/tedi/components/form/date-field/date-field.d.ts +1 -1
  126. package/src/tedi/components/form/date-field/date-field.es.js +169 -164
  127. package/src/tedi/components/form/date-time-field/date-time-field.cjs.js +1 -1
  128. package/src/tedi/components/form/date-time-field/date-time-field.es.js +181 -176
  129. package/src/tedi/components/form/search/index.d.ts +1 -0
  130. package/src/tedi/components/form/search/search.cjs.js +1 -1
  131. package/src/tedi/components/form/search/search.d.ts +92 -1
  132. package/src/tedi/components/form/search/search.es.js +265 -69
  133. package/src/tedi/components/form/search/search.module.scss.cjs.js +1 -1
  134. package/src/tedi/components/form/search/search.module.scss.es.js +9 -1
  135. package/src/tedi/components/form/slider/slider.cjs.js +1 -1
  136. package/src/tedi/components/form/slider/slider.es.js +38 -38
  137. package/src/tedi/components/form/slider/slider.module.scss.cjs.js +1 -1
  138. package/src/tedi/components/form/slider/slider.module.scss.es.js +0 -1
  139. package/src/tedi/components/form/textfield/textfield.cjs.js +1 -1
  140. package/src/tedi/components/form/textfield/textfield.es.js +21 -21
  141. package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
  142. package/src/tedi/components/form/time-field/time-field.es.js +126 -124
  143. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.cjs.js +1 -1
  144. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.d.ts +1 -1
  145. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.es.js +28 -27
  146. package/src/tedi/components/layout/mobile-nav/mobile-nav.cjs.js +1 -1
  147. package/src/tedi/components/layout/mobile-nav/mobile-nav.d.ts +1 -1
  148. package/src/tedi/components/layout/mobile-nav/mobile-nav.es.js +124 -92
  149. package/src/tedi/components/layout/sidenav/sidenav.module.scss.cjs.js +1 -1
  150. package/src/tedi/components/layout/sidenav/sidenav.module.scss.es.js +1 -0
  151. package/src/tedi/components/misc/affix/affix.cjs.js +1 -1
  152. package/src/tedi/components/misc/affix/affix.es.js +20 -8
  153. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.cjs.js +1 -1
  154. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.d.ts +9 -1
  155. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-collapsible/table-of-contents-collapsible.es.js +78 -39
  156. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-item/table-of-contents-item.d.ts +6 -0
  157. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.cjs.js +1 -1
  158. package/src/tedi/components/navigation/table-of-contents/components/table-of-contents-row/table-of-contents-row.es.js +23 -28
  159. package/src/tedi/components/navigation/table-of-contents/table-of-contents.cjs.js +1 -1
  160. package/src/tedi/components/navigation/table-of-contents/table-of-contents.d.ts +32 -21
  161. package/src/tedi/components/navigation/table-of-contents/table-of-contents.es.js +58 -55
  162. package/src/tedi/components/navigation/table-of-contents/table-of-contents.module.scss.cjs.js +1 -1
  163. package/src/tedi/components/navigation/table-of-contents/table-of-contents.module.scss.es.js +4 -1
  164. package/src/tedi/components/navigation/tabs/tabs-helpers.cjs.js +1 -1
  165. package/src/tedi/components/navigation/tabs/tabs-helpers.d.ts +5 -0
  166. package/src/tedi/components/navigation/tabs/tabs-helpers.es.js +7 -4
  167. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.cjs.js +1 -1
  168. package/src/tedi/components/navigation/tabs/tabs-trigger/tabs-trigger.es.js +17 -17
  169. package/src/tedi/components/overlays/dropdown/dropdown.cjs.js +1 -1
  170. package/src/tedi/components/overlays/dropdown/dropdown.d.ts +8 -0
  171. package/src/tedi/components/overlays/dropdown/dropdown.es.js +82 -72
  172. package/src/tedi/components/overlays/dropdown/dropdown.module.scss.cjs.js +1 -1
  173. package/src/tedi/components/overlays/dropdown/dropdown.module.scss.es.js +1 -0
  174. package/src/tedi/components/overlays/overlay/overlay-trigger.cjs.js +1 -1
  175. package/src/tedi/components/overlays/overlay/overlay-trigger.es.js +22 -21
  176. package/src/tedi/helpers/warn-deprecated/warn-deprecated.cjs.js +1 -0
  177. package/src/tedi/helpers/warn-deprecated/warn-deprecated.d.ts +12 -0
  178. package/src/tedi/helpers/warn-deprecated/warn-deprecated.es.js +11 -0
  179. package/src/tedi/index.d.ts +2 -1
  180. package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
  181. package/src/tedi/providers/label-provider/labels-map.d.ts +44 -2
  182. package/src/tedi/providers/label-provider/labels-map.es.js +43 -1
  183. package/tedi.cjs.js +1 -1
  184. package/tedi.es.js +326 -324
@@ -1,45 +1,40 @@
1
1
  import { jsxs as p, jsx as e } from "react/jsx-runtime";
2
- import f from "../../../../../../../external/classnames/index.es.js";
3
- import { useContext as x } from "react";
4
- import { Separator as g } from "../../../../misc/separator/separator.es.js";
5
- import { TableOfContentsContext as j } from "../../table-of-contents.es.js";
2
+ import _ from "../../../../../../../external/classnames/index.es.js";
3
+ import { useContext as j } from "react";
4
+ import { Separator as y } from "../../../../misc/separator/separator.es.js";
5
+ import { TableOfContentsContext as R } from "../../table-of-contents.es.js";
6
6
  import t from "../../table-of-contents.module.scss.es.js";
7
- const _ = ({ node: b, depth: i, index: l, numberPrefix: s }) => {
8
- const { activeId: u, numbered: a, activeTrail: h } = x(j), { id: o, content: N, children: n, separator: v } = b, C = !!(n != null && n.length), c = !!o && o === u, $ = C && !!o && h.has(o), w = Math.min(i, 2), r = s ? `${s}.${l + 1}` : `${l + 1}`, O = s ? r : `${r}.`, T = a ? "ol" : "ul";
7
+ const b = ({ node: u, depth: r, index: i, numberPrefix: s }) => {
8
+ const { activeId: h, numbered: a, activeTrail: v, defaultOpen: N } = j(R), { id: o, content: C, children: n, separator: O, slot: c } = u, $ = !!(n != null && n.length), d = !!o && o === h, w = $ && (N || !!o && v.has(o)), T = Math.min(r, 2), l = s ? `${s}.${i + 1}` : `${i + 1}`, x = s ? l : `${l}.`, g = a ? "ol" : "ul";
9
9
  return /* @__PURE__ */ p(
10
10
  "li",
11
11
  {
12
- "aria-current": c ? "true" : void 0,
13
- className: f(t["tedi-table-of-contents__item"], {
14
- [t["tedi-table-of-contents__item--selected"]]: c
12
+ "aria-current": d ? "true" : void 0,
13
+ className: _(t["tedi-table-of-contents__item"], {
14
+ [t["tedi-table-of-contents__item--selected"]]: d
15
15
  }),
16
16
  children: [
17
- /* @__PURE__ */ p(
18
- "span",
19
- {
20
- className: f(t["tedi-table-of-contents__row"], t[`tedi-table-of-contents__row--level-${w}`]),
21
- children: [
22
- a && /* @__PURE__ */ e("span", { className: t["tedi-table-of-contents__number"], "aria-hidden": "true", children: O }),
23
- /* @__PURE__ */ e("span", { className: t["tedi-table-of-contents__content"], children: N })
24
- ]
25
- }
26
- ),
27
- $ && /* @__PURE__ */ e(T, { className: t["tedi-table-of-contents__group"], children: n.map((m, d) => /* @__PURE__ */ e(
28
- _,
17
+ /* @__PURE__ */ p("div", { className: _(t["tedi-table-of-contents__row"], t[`tedi-table-of-contents__row--level-${T}`]), children: [
18
+ a && /* @__PURE__ */ e("span", { className: t["tedi-table-of-contents__number"], "aria-hidden": "true", children: x }),
19
+ /* @__PURE__ */ e("span", { className: t["tedi-table-of-contents__content"], children: C }),
20
+ c !== void 0 && /* @__PURE__ */ e("div", { className: t["tedi-table-of-contents__slot"], children: c })
21
+ ] }),
22
+ w && /* @__PURE__ */ e(g, { className: t["tedi-table-of-contents__group"], children: n.map((m, f) => /* @__PURE__ */ e(
23
+ b,
29
24
  {
30
25
  node: m,
31
- depth: i + 1,
32
- index: d,
33
- numberPrefix: a ? r : void 0
26
+ depth: r + 1,
27
+ index: f,
28
+ numberPrefix: a ? l : void 0
34
29
  },
35
- m.id ?? d
30
+ m.id ?? f
36
31
  )) }),
37
- v && /* @__PURE__ */ e(g, {})
32
+ O && /* @__PURE__ */ e(y, { className: t["tedi-table-of-contents__separator"] })
38
33
  ]
39
34
  }
40
35
  );
41
36
  };
42
- _.displayName = "TableOfContentsRow";
37
+ b.displayName = "TableOfContentsRow";
43
38
  export {
44
- _ as TableOfContentsRow
39
+ b as TableOfContentsRow
45
40
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),g=require("../../../../../external/classnames/index.cjs.js"),l=require("react"),S=require("../../misc/affix/affix.cjs.js"),k=require("./components/table-of-contents-collapsible/table-of-contents-collapsible.cjs.js"),y=require("./components/table-of-contents-item/table-of-contents-item.cjs.js"),M=require("./components/table-of-contents-list/table-of-contents-list.cjs.js"),b=require("./table-of-contents.module.scss.cjs.js"),w=require("../../../providers/label-provider/use-labels.cjs.js"),E=require("../../content/card/card.cjs.js"),P=require("../../content/card/card-content/card-content.cjs.js"),q=l.createContext({activeTrail:new Set}),C=n=>l.isValidElement(n)&&n.type===y.TableOfContentsItem,m=n=>l.Children.toArray(n).filter(C).map(c=>{const{id:s,separator:r,children:a}=c.props,o=l.Children.toArray(a),e=o.filter(C),i=o.filter(d=>!C(d));return{id:s,separator:r,content:t.jsx(t.Fragment,{children:i}),children:e.length?m(a):void 0}}),j=(n,c)=>{const s=new Set;if(!c)return s;const r=(a,o)=>{for(const e of a){const i=e.id?[...o,e.id]:o;if(e.id===c||e.children&&r(e.children,i))return i.forEach(d=>s.add(d)),!0}return!1};return r(n,[]),s};function u(n){const{getLabel:c}=w.useLabels(),{children:s,heading:r,headingLevel:a="h3",ariaLabel:o,activeId:e,numbered:i=!1,sticky:d=!0,variant:h="default",padding:p,className:N}=n,L=r===void 0?c("table-of-contents.title"):r,f=l.useMemo(()=>m(s),[s]),v=l.useMemo(()=>j(f,e),[f,e]),A=l.useMemo(()=>({activeId:e,numbered:i,headingLevel:a,ariaLabel:o,activeTrail:v}),[e,i,a,o,v]),I=p!==void 0?{"--tedi-table-of-contents-padding":`${p}rem`}:void 0,x=t.jsx("div",{className:g.default(b.default["tedi-table-of-contents"],{[b.default["tedi-table-of-contents--transparent"]]:h==="transparent"}),style:I,children:t.jsx(M.TableOfContentsList,{nodes:f,heading:L})}),T=g.default({[b.default["tedi-table-of-contents--sticky"]]:d},N),O=h==="transparent"?t.jsx("div",{className:T,children:x}):t.jsx(E.Card,{className:T,children:t.jsx(P.CardContent,{padding:0,children:x})});return t.jsx(q.Provider,{value:A,children:d?t.jsx(S.Affix,{position:"sticky",top:1.5,bottom:1.5,children:O}):O})}u.displayName="TableOfContents";u.Item=y.TableOfContentsItem;u.Collapsible=k.TableOfContentsCollapsible;exports.TableOfContents=u;exports.TableOfContentsContext=q;exports.buildActiveTrail=j;exports.childrenToNodes=m;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("react/jsx-runtime"),g=require("../../../../../external/classnames/index.cjs.js"),i=require("react"),P=require("../../misc/affix/affix.cjs.js"),S=require("./components/table-of-contents-collapsible/table-of-contents-collapsible.cjs.js"),j=require("./components/table-of-contents-item/table-of-contents-item.cjs.js"),B=require("./components/table-of-contents-list/table-of-contents-list.cjs.js"),f=require("./table-of-contents.module.scss.cjs.js"),M=require("../../../providers/label-provider/use-labels.cjs.js"),w=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),E=require("../../content/card/card.cjs.js"),R=require("../../content/card/card-content/card-content.cjs.js"),y=i.createContext({activeTrail:new Set}),m=t=>i.isValidElement(t)&&t.type===j.TableOfContentsItem,h=t=>i.Children.toArray(t).filter(m).map(l=>{const{id:o,separator:a,slot:c,children:s}=l.props,e=i.Children.toArray(s),n=e.filter(m),d=e.filter(u=>!m(u));return{id:o,separator:a,slot:c,content:r.jsx(r.Fragment,{children:d}),children:n.length?h(s):void 0}}),k=(t,l)=>{const o=new Set;if(!l)return o;const a=(c,s)=>{for(const e of c){const n=e.id?[...s,e.id]:s;if(e.id===l||e.children&&a(e.children,n))return n.forEach(d=>o.add(d)),!0}return!1};return a(t,[]),o};function b(t){const{getLabel:l}=M.useLabels(),{getCurrentBreakpointProps:o}=w.useBreakpointProps(t.defaultServerBreakpoint),{children:a,heading:c,headingLevel:s="h3",ariaLabel:e,activeId:n,defaultOpen:d=!0,numbered:u=!1,sticky:p=!0,variant:x="default",bordered:N=!1,className:L}=o(t),A=c===void 0?l("table-of-contents.title"):c,C=i.useMemo(()=>h(a),[a]),T=i.useMemo(()=>k(C,n),[C,n]),I=i.useMemo(()=>({activeId:n,numbered:u,headingLevel:s,ariaLabel:e,activeTrail:T,defaultOpen:d}),[n,u,s,e,T,d]),v=r.jsx("div",{className:g.default(f.default["tedi-table-of-contents"],{[f.default["tedi-table-of-contents--transparent"]]:x==="transparent",[f.default["tedi-table-of-contents--bordered"]]:N}),children:r.jsx(B.TableOfContentsList,{nodes:C,heading:A})}),O=g.default({[f.default["tedi-table-of-contents--sticky"]]:p},L),q=x==="transparent"?r.jsx("div",{className:O,children:v}):r.jsx(E.Card,{className:O,children:r.jsx(R.CardContent,{padding:0,children:v})});return r.jsx(y.Provider,{value:I,children:p?r.jsx(P.Affix,{position:"sticky",top:1.5,bottom:1.5,children:q}):q})}b.displayName="TableOfContents";b.Item=j.TableOfContentsItem;b.Collapsible=S.TableOfContentsCollapsible;exports.TableOfContents=b;exports.TableOfContentsContext=y;exports.buildActiveTrail=k;exports.childrenToNodes=h;
@@ -1,8 +1,24 @@
1
1
  import { ReactNode } from 'react';
2
+ import { BreakpointSupport } from '../../../helpers';
2
3
  import { TableOfContentsItemProps } from './components/table-of-contents-item/table-of-contents-item';
3
- /** Semantic level of the `TableOfContents` heading element. */
4
4
  export type TableOfContentsHeadingLevel = 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
5
- export interface TableOfContentsProps {
5
+ type TableOfContentsBreakpointProps = {
6
+ /**
7
+ * Visual variant:
8
+ * - `default` — rendered inside a bordered `Card`.
9
+ * - `transparent` — no card chrome (border / background); the list sits
10
+ * directly on the page, with a continuous grey left rail (the active item's
11
+ * segment turns blue).
12
+ * @default default
13
+ */
14
+ variant?: 'default' | 'transparent';
15
+ /**
16
+ * Stick the card to the viewport while scrolling.
17
+ * @default true
18
+ */
19
+ sticky?: boolean;
20
+ };
21
+ export interface TableOfContentsProps extends BreakpointSupport<TableOfContentsBreakpointProps> {
6
22
  /**
7
23
  * `TableOfContents.Item` elements. An item's non-`Item` children are its
8
24
  * link / label; nested `TableOfContents.Item` children become its sub-items.
@@ -28,36 +44,29 @@ export interface TableOfContentsProps {
28
44
  */
29
45
  ariaLabel?: string;
30
46
  /**
31
- * Visual variant:
32
- * - `default` — rendered inside a bordered `Card`.
33
- * - `transparent` — no card chrome (border / background); the list sits
34
- * directly on the page, with a continuous grey left rail (the active item's
35
- * segment turns blue).
36
- * @default default
47
+ * Id of the currently active item. The active item gets the left accent bar
48
+ * and active link colour. When `defaultOpen` is `false`, the branch leading
49
+ * to it is the only one kept expanded.
37
50
  */
38
- variant?: 'default' | 'transparent';
51
+ activeId?: string;
39
52
  /**
40
- * Inner padding of the container, in rem — the spacing between the card edge and the
41
- * heading / items. Defaults to the card's medium padding token.
53
+ * Draws a divider between items so the list reads as a set of separated rows. The last item has no
54
+ * divider — the card border closes the list.
55
+ * @default false
42
56
  */
43
- padding?: number;
57
+ bordered?: boolean;
44
58
  /**
45
- * Id of the currently active item. The active item gets the left accent bar
46
- * and active link colour; the branch leading to it auto-expands its nested
47
- * children.
59
+ * Whether every item's sub-items are expanded by default. Set `false` to make the list behave like
60
+ * an accordion: only the branch leading to `activeId` keeps its nested children visible.
61
+ * @default true
48
62
  */
49
- activeId?: string;
63
+ defaultOpen?: boolean;
50
64
  /**
51
65
  * Render the list as an ordered list with auto-generated hierarchical numbers
52
66
  * (`1.`, `2.`, `2.1`, …) shown before each item.
53
67
  * @default false
54
68
  */
55
69
  numbered?: boolean;
56
- /**
57
- * Stick the card to the viewport while scrolling.
58
- * @default true
59
- */
60
- sticky?: boolean;
61
70
  /**
62
71
  * Additional class name on the root element.
63
72
  */
@@ -69,6 +78,7 @@ export interface TableOfContentsNode {
69
78
  content: ReactNode;
70
79
  children?: TableOfContentsNode[];
71
80
  separator?: boolean;
81
+ slot?: ReactNode;
72
82
  }
73
83
  interface TableOfContentsContextValue {
74
84
  activeId?: string;
@@ -76,6 +86,7 @@ interface TableOfContentsContextValue {
76
86
  headingLevel?: TableOfContentsHeadingLevel;
77
87
  ariaLabel?: string;
78
88
  activeTrail: Set<string>;
89
+ defaultOpen?: boolean;
79
90
  }
80
91
  export declare const TableOfContentsContext: import('react').Context<TableOfContentsContextValue>;
81
92
  export declare const childrenToNodes: (children: ReactNode) => TableOfContentsNode[];
@@ -1,70 +1,73 @@
1
- import { jsx as r, Fragment as w } from "react/jsx-runtime";
2
- import T from "../../../../../external/classnames/index.es.js";
3
- import { useMemo as m, createContext as E, Children as N, isValidElement as S } from "react";
4
- import { Affix as V } from "../../misc/affix/affix.es.js";
5
- import { TableOfContentsCollapsible as j } from "./components/table-of-contents-collapsible/table-of-contents-collapsible.es.js";
6
- import { TableOfContentsItem as x } from "./components/table-of-contents-item/table-of-contents-item.es.js";
7
- import { TableOfContentsList as F } from "./components/table-of-contents-list/table-of-contents-list.es.js";
8
- import f from "./table-of-contents.module.scss.es.js";
9
- import { useLabels as H } from "../../../providers/label-provider/use-labels.es.js";
1
+ import { jsx as o, Fragment as B } from "react/jsx-runtime";
2
+ import N from "../../../../../external/classnames/index.es.js";
3
+ import { useMemo as p, createContext as E, Children as k, isValidElement as P } from "react";
4
+ import { Affix as S } from "../../misc/affix/affix.es.js";
5
+ import { TableOfContentsCollapsible as V } from "./components/table-of-contents-collapsible/table-of-contents-collapsible.es.js";
6
+ import { TableOfContentsItem as O } from "./components/table-of-contents-item/table-of-contents-item.es.js";
7
+ import { TableOfContentsList as j } from "./components/table-of-contents-list/table-of-contents-list.es.js";
8
+ import m from "./table-of-contents.module.scss.es.js";
9
+ import { useLabels as F } from "../../../providers/label-provider/use-labels.es.js";
10
+ import { useBreakpointProps as H } from "../../../helpers/hooks/use-breakpoint-props.es.js";
10
11
  import { Card as M } from "../../content/card/card.es.js";
11
- import { CardContent as P } from "../../content/card/card-content/card-content.es.js";
12
- const $ = E({
12
+ import { CardContent as q } from "../../content/card/card-content/card-content.es.js";
13
+ const z = E({
13
14
  activeTrail: /* @__PURE__ */ new Set()
14
- }), p = (e) => S(e) && e.type === x, O = (e) => N.toArray(e).filter(p).map((l) => {
15
- const { id: n, separator: i, children: s } = l.props, o = N.toArray(s), t = o.filter(p), a = o.filter((c) => !p(c));
15
+ }), u = (e) => P(e) && e.type === O, x = (e) => k.toArray(e).filter(u).map((a) => {
16
+ const { id: i, separator: s, slot: l, children: r } = a.props, t = k.toArray(r), n = t.filter(u), c = t.filter((d) => !u(d));
16
17
  return {
17
- id: n,
18
- separator: i,
19
- content: /* @__PURE__ */ r(w, { children: a }),
20
- children: t.length ? O(s) : void 0
18
+ id: i,
19
+ separator: s,
20
+ slot: l,
21
+ content: /* @__PURE__ */ o(B, { children: c }),
22
+ children: n.length ? x(r) : void 0
21
23
  };
22
- }), q = (e, l) => {
23
- const n = /* @__PURE__ */ new Set();
24
- if (!l) return n;
25
- const i = (s, o) => {
26
- for (const t of s) {
27
- const a = t.id ? [...o, t.id] : o;
28
- if (t.id === l || t.children && i(t.children, a))
29
- return a.forEach((c) => n.add(c)), !0;
24
+ }), D = (e, a) => {
25
+ const i = /* @__PURE__ */ new Set();
26
+ if (!a) return i;
27
+ const s = (l, r) => {
28
+ for (const t of l) {
29
+ const n = t.id ? [...r, t.id] : r;
30
+ if (t.id === a || t.children && s(t.children, n))
31
+ return n.forEach((c) => i.add(c)), !0;
30
32
  }
31
33
  return !1;
32
34
  };
33
- return i(e, []), n;
35
+ return s(e, []), i;
34
36
  };
35
- function h(e) {
36
- const { getLabel: l } = H(), {
37
- children: n,
38
- heading: i,
39
- headingLevel: s = "h3",
40
- ariaLabel: o,
41
- activeId: t,
42
- numbered: a = !1,
43
- sticky: c = !0,
44
- variant: b = "default",
45
- padding: u,
46
- className: A
47
- } = e, L = i === void 0 ? l("table-of-contents.title") : i, d = m(() => O(n), [n]), C = m(() => q(d, t), [d, t]), k = m(
48
- () => ({ activeId: t, numbered: a, headingLevel: s, ariaLabel: o, activeTrail: C }),
49
- [t, a, s, o, C]
50
- ), I = u !== void 0 ? { "--tedi-table-of-contents-padding": `${u}rem` } : void 0, v = /* @__PURE__ */ r(
37
+ function b(e) {
38
+ const { getLabel: a } = F(), { getCurrentBreakpointProps: i } = H(e.defaultServerBreakpoint), {
39
+ children: s,
40
+ heading: l,
41
+ headingLevel: r = "h3",
42
+ ariaLabel: t,
43
+ activeId: n,
44
+ defaultOpen: c = !0,
45
+ numbered: d = !1,
46
+ sticky: h = !0,
47
+ variant: C = "default",
48
+ bordered: A = !1,
49
+ className: L
50
+ } = i(e), I = l === void 0 ? a("table-of-contents.title") : l, f = p(() => x(s), [s]), v = p(() => D(f, n), [f, n]), w = p(
51
+ () => ({ activeId: n, numbered: d, headingLevel: r, ariaLabel: t, activeTrail: v, defaultOpen: c }),
52
+ [n, d, r, t, v, c]
53
+ ), T = /* @__PURE__ */ o(
51
54
  "div",
52
55
  {
53
- className: T(f["tedi-table-of-contents"], {
54
- [f["tedi-table-of-contents--transparent"]]: b === "transparent"
56
+ className: N(m["tedi-table-of-contents"], {
57
+ [m["tedi-table-of-contents--transparent"]]: C === "transparent",
58
+ [m["tedi-table-of-contents--bordered"]]: A
55
59
  }),
56
- style: I,
57
- children: /* @__PURE__ */ r(F, { nodes: d, heading: L })
60
+ children: /* @__PURE__ */ o(j, { nodes: f, heading: I })
58
61
  }
59
- ), y = T({ [f["tedi-table-of-contents--sticky"]]: c }, A), g = b === "transparent" ? /* @__PURE__ */ r("div", { className: y, children: v }) : /* @__PURE__ */ r(M, { className: y, children: /* @__PURE__ */ r(P, { padding: 0, children: v }) });
60
- return /* @__PURE__ */ r($.Provider, { value: k, children: c ? /* @__PURE__ */ r(V, { position: "sticky", top: 1.5, bottom: 1.5, children: g }) : g });
62
+ ), g = N({ [m["tedi-table-of-contents--sticky"]]: h }, L), y = C === "transparent" ? /* @__PURE__ */ o("div", { className: g, children: T }) : /* @__PURE__ */ o(M, { className: g, children: /* @__PURE__ */ o(q, { padding: 0, children: T }) });
63
+ return /* @__PURE__ */ o(z.Provider, { value: w, children: h ? /* @__PURE__ */ o(S, { position: "sticky", top: 1.5, bottom: 1.5, children: y }) : y });
61
64
  }
62
- h.displayName = "TableOfContents";
63
- h.Item = x;
64
- h.Collapsible = j;
65
+ b.displayName = "TableOfContents";
66
+ b.Item = O;
67
+ b.Collapsible = V;
65
68
  export {
66
- h as TableOfContents,
67
- $ as TableOfContentsContext,
68
- q as buildActiveTrail,
69
- O as childrenToNodes
69
+ b as TableOfContents,
70
+ z as TableOfContentsContext,
71
+ D as buildActiveTrail,
72
+ x as childrenToNodes
70
73
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-table-of-contents":"tedi-table-of-contents-ce55e86d","tedi-table-of-contents--transparent":"tedi-table-of-contents--transparent-067ea2c2","tedi-table-of-contents__list":"tedi-table-of-contents__list-94025876","tedi-table-of-contents--sticky":"tedi-table-of-contents--sticky-1ee87047","tedi-table-of-contents__heading":"tedi-table-of-contents__heading-c6b7a6df","tedi-table-of-contents__group":"tedi-table-of-contents__group-590e4963","tedi-table-of-contents__list--headless":"tedi-table-of-contents__list--headless-99c1bab5","tedi-table-of-contents__item":"tedi-table-of-contents__item-29f072b5","tedi-table-of-contents__row":"tedi-table-of-contents__row-fb686650","tedi-table-of-contents__row--level-2":"tedi-table-of-contents__row--level-2-4fec675b","tedi-table-of-contents__number":"tedi-table-of-contents__number-693b03b7","tedi-table-of-contents__content":"tedi-table-of-contents__content-8a05ad59","tedi-table-of-contents__item--selected":"tedi-table-of-contents__item--selected-632958d1","tedi-table-of-contents__bar":"tedi-table-of-contents__bar-f4daef0b","tedi-table-of-contents__bar--static":"tedi-table-of-contents__bar--static-f919cf73","tedi-table-of-contents__bar-title":"tedi-table-of-contents__bar-title-b82ab4ed","tedi-table-of-contents__sheet":"tedi-table-of-contents__sheet-16e41b54","tedi-table-of-contents__sheet-header":"tedi-table-of-contents__sheet-header-ec904c54"};exports.default=t;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t={"tedi-table-of-contents":"tedi-table-of-contents-ce55e86d","tedi-table-of-contents--bordered":"tedi-table-of-contents--bordered-90b16d0b","tedi-table-of-contents--transparent":"tedi-table-of-contents--transparent-067ea2c2","tedi-table-of-contents__list":"tedi-table-of-contents__list-94025876","tedi-table-of-contents--sticky":"tedi-table-of-contents--sticky-1ee87047","tedi-table-of-contents__heading":"tedi-table-of-contents__heading-c6b7a6df","tedi-table-of-contents__group":"tedi-table-of-contents__group-590e4963","tedi-table-of-contents__item":"tedi-table-of-contents__item-29f072b5","tedi-table-of-contents__row":"tedi-table-of-contents__row-fb686650","tedi-table-of-contents__row--level-2":"tedi-table-of-contents__row--level-2-4fec675b","tedi-table-of-contents__number":"tedi-table-of-contents__number-693b03b7","tedi-table-of-contents__content":"tedi-table-of-contents__content-8a05ad59","tedi-table-of-contents__slot":"tedi-table-of-contents__slot-53aefc57","tedi-table-of-contents__item--selected":"tedi-table-of-contents__item--selected-632958d1","tedi-table-of-contents__separator":"tedi-table-of-contents__separator-b824eeee","tedi-table-of-contents__bar":"tedi-table-of-contents__bar-f4daef0b","tedi-table-of-contents__bar--static":"tedi-table-of-contents__bar--static-f919cf73","tedi-table-of-contents__bar--hidden":"tedi-table-of-contents__bar--hidden-53dd04a2","tedi-table-of-contents__bar-title":"tedi-table-of-contents__bar-title-b82ab4ed","tedi-table-of-contents__sheet":"tedi-table-of-contents__sheet-16e41b54","tedi-table-of-contents__sheet-header":"tedi-table-of-contents__sheet-header-ec904c54"};exports.default=t;
@@ -1,19 +1,22 @@
1
1
  const t = {
2
2
  "tedi-table-of-contents": "tedi-table-of-contents-ce55e86d",
3
+ "tedi-table-of-contents--bordered": "tedi-table-of-contents--bordered-90b16d0b",
3
4
  "tedi-table-of-contents--transparent": "tedi-table-of-contents--transparent-067ea2c2",
4
5
  "tedi-table-of-contents__list": "tedi-table-of-contents__list-94025876",
5
6
  "tedi-table-of-contents--sticky": "tedi-table-of-contents--sticky-1ee87047",
6
7
  "tedi-table-of-contents__heading": "tedi-table-of-contents__heading-c6b7a6df",
7
8
  "tedi-table-of-contents__group": "tedi-table-of-contents__group-590e4963",
8
- "tedi-table-of-contents__list--headless": "tedi-table-of-contents__list--headless-99c1bab5",
9
9
  "tedi-table-of-contents__item": "tedi-table-of-contents__item-29f072b5",
10
10
  "tedi-table-of-contents__row": "tedi-table-of-contents__row-fb686650",
11
11
  "tedi-table-of-contents__row--level-2": "tedi-table-of-contents__row--level-2-4fec675b",
12
12
  "tedi-table-of-contents__number": "tedi-table-of-contents__number-693b03b7",
13
13
  "tedi-table-of-contents__content": "tedi-table-of-contents__content-8a05ad59",
14
+ "tedi-table-of-contents__slot": "tedi-table-of-contents__slot-53aefc57",
14
15
  "tedi-table-of-contents__item--selected": "tedi-table-of-contents__item--selected-632958d1",
16
+ "tedi-table-of-contents__separator": "tedi-table-of-contents__separator-b824eeee",
15
17
  "tedi-table-of-contents__bar": "tedi-table-of-contents__bar-f4daef0b",
16
18
  "tedi-table-of-contents__bar--static": "tedi-table-of-contents__bar--static-f919cf73",
19
+ "tedi-table-of-contents__bar--hidden": "tedi-table-of-contents__bar--hidden-53dd04a2",
17
20
  "tedi-table-of-contents__bar-title": "tedi-table-of-contents__bar-title-b82ab4ed",
18
21
  "tedi-table-of-contents__sheet": "tedi-table-of-contents__sheet-16e41b54",
19
22
  "tedi-table-of-contents__sheet-header": "tedi-table-of-contents__sheet-header-ec904c54"
@@ -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
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const c=require("react/jsx-runtime"),e=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),H=require("../../../../../external/classnames/index.cjs.js"),t=require("react"),O=require("./dropdown.module.scss.cjs.js"),$=require("./dropdown-content/dropdown-content.cjs.js"),z=require("./dropdown-context.cjs.js"),G=require("./dropdown-helpers.cjs.js"),J=require("./dropdown-item/dropdown-item.cjs.js"),K=require("./dropdown-separator/dropdown-separator.cjs.js"),Q=require("./dropdown-trigger/dropdown-trigger.cjs.js"),V=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),X=require("../../../providers/label-provider/use-labels.cjs.js"),Y=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),m=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),Z=4,d=w=>{var I;const{getCurrentBreakpointProps:S}=V.useBreakpointProps(w.defaultServerBreakpoint),{children:F,modal:v=!1,divided:P=!1,width:R="auto",variant:u="default",open:p,defaultOpen:b=!1,onOpenChange:a,defaultActiveIndex:o,placement:f="bottom-start",className:j}=S(w),{getLabel:k}=X.useLabels(),y=e.useFloatingNodeId(),q=t.useRef([]),[l,g]=t.useState(o??null),[h,B]=t.useState(null),[N,T]=t.useState(b),n=p??N;t.useEffect(()=>{n||g(o??null)},[n,o]);const x=t.useCallback(i=>{p===void 0&&T(i),a==null||a(i)},[p,a]),U=e.useFloating({nodeId:y,open:n,placement:f,onOpenChange:x,middleware:[m.offset(Z),m.flip(),m.shift()],whileElementsMounted:Y.autoUpdate}),{context:r,refs:s,x:_,y:L,strategy:M}=U,D=e.useInteractions([e.useClick(r),e.useRole(r,{role:"menu"}),e.useDismiss(r),e.useListNavigation(r,{listRef:q,activeIndex:l,onNavigate:g,loop:!0,selectedIndex:o??null,focusItemOnOpen:o!==null?!0:"auto"})]),W={open:n,setOpen:x,refs:s,listItemsRef:q,activeIndex:l,setActiveIndex:g,placement:f,content:h,setContent:B,divided:P,variant:u,...D},E=(I=s.reference.current)==null?void 0:I.getBoundingClientRect().width,A=t.useMemo(()=>{const i=s.reference.current;if(!i)return;const C=i.offsetParent;if(C)return C.getBoundingClientRect().width},[s.reference.current]);return c.jsxs(z.DropdownContext.Provider,{value:W,children:[F,c.jsx(e.FloatingPortal,{children:n&&c.jsx(e.FloatingFocusManager,{context:r,modal:v,visuallyHiddenDismiss:v?k("close"):!1,children:c.jsx("div",{...D.getFloatingProps({ref:s.setFloating,className:H.default(O.default["tedi-dropdown"],{[O.default[`tedi-dropdown--${u}`]]:u==="tree"},j),style:{position:M,left:_??0,top:L??0,width:G.resolveDropdownWidth(R,E,A)},role:"menu","aria-orientation":"vertical","aria-activedescendant":l!==null?`dropdown-item-${l}`:void 0}),"data-placement":f,"data-state":n?"open":"closed",children:h})})})]})};d.Trigger=Q.DropdownTrigger;d.Content=$.DropdownContent;d.Item=J.DropdownItem;d.Separator=K.DropdownSeparator;exports.Dropdown=d;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const d=require("react/jsx-runtime"),e=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),A=require("../../../../../external/classnames/index.cjs.js"),t=require("react"),v=require("./dropdown.module.scss.cjs.js"),z=require("./dropdown-content/dropdown-content.cjs.js"),G=require("./dropdown-context.cjs.js"),J=require("./dropdown-helpers.cjs.js"),K=require("./dropdown-item/dropdown-item.cjs.js"),Q=require("./dropdown-separator/dropdown-separator.cjs.js"),V=require("./dropdown-trigger/dropdown-trigger.cjs.js"),X=require("../../../helpers/hooks/use-breakpoint-props.cjs.js"),Y=require("../../../providers/label-provider/use-labels.cjs.js"),Z=require("../../../../../external/@floating-ui/dom/dist/floating-ui.dom.cjs.js"),x=require("../../../../../external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js"),ee=4,a=h=>{var O;const{getCurrentBreakpointProps:b}=X.useBreakpointProps(h.defaultServerBreakpoint),{children:F,modal:q=!1,divided:P=!1,width:R="auto",variant:p="default",open:f,defaultOpen:y=!1,onOpenChange:l,defaultActiveIndex:n,placement:g="bottom-start",maxHeight:c,className:j}=b(h),{getLabel:N}=Y.useLabels(),_=e.useFloatingNodeId(),D=t.useRef([]),[u,m]=t.useState(n??null),[w,k]=t.useState(null),[B,T]=t.useState(y),o=f??B;t.useEffect(()=>{o||m(n??null)},[o,n]);const I=t.useCallback(i=>{f===void 0&&T(i),l==null||l(i)},[f,l]),U=e.useFloating({nodeId:_,open:o,placement:g,onOpenChange:I,middleware:[x.offset(ee),x.flip(),x.shift()],whileElementsMounted:Z.autoUpdate}),{context:r,refs:s,x:H,y:L,strategy:M}=U,C=e.useInteractions([e.useClick(r),e.useRole(r,{role:"menu"}),e.useDismiss(r),e.useListNavigation(r,{listRef:D,activeIndex:u,onNavigate:m,loop:!0,selectedIndex:n??null,focusItemOnOpen:n!==null?!0:"auto"})]),W={open:o,setOpen:I,refs:s,listItemsRef:D,activeIndex:u,setActiveIndex:m,placement:g,content:w,setContent:k,divided:P,variant:p,...C},E=(O=s.reference.current)==null?void 0:O.getBoundingClientRect().width,$=t.useMemo(()=>{const i=s.reference.current;if(!i)return;const S=i.offsetParent;if(S)return S.getBoundingClientRect().width},[s.reference.current]);return d.jsxs(G.DropdownContext.Provider,{value:W,children:[F,d.jsx(e.FloatingPortal,{children:o&&d.jsx(e.FloatingFocusManager,{context:r,modal:q,visuallyHiddenDismiss:q?N("close"):!1,children:d.jsx("div",{...C.getFloatingProps({ref:s.setFloating,className:A.default(v.default["tedi-dropdown"],{[v.default[`tedi-dropdown--${p}`]]:p==="tree"},j),style:{position:M,left:H??0,top:L??0,width:J.resolveDropdownWidth(R,E,$)},role:"menu","aria-orientation":"vertical","aria-activedescendant":u!==null?`dropdown-item-${u}`:void 0}),"data-placement":g,"data-state":o?"open":"closed",children:c!==void 0?d.jsx("div",{className:v.default["tedi-dropdown__scroll"],role:"group",tabIndex:0,style:{maxHeight:typeof c=="number"?`${c}px`:c},children:w}):w})})})]})};a.Trigger=V.DropdownTrigger;a.Content=z.DropdownContent;a.Item=K.DropdownItem;a.Separator=Q.DropdownSeparator;exports.Dropdown=a;
@@ -34,6 +34,14 @@ type DropdownBreakpointProps = {
34
34
  * @default 'default'
35
35
  */
36
36
  variant?: 'default' | 'tree';
37
+ /**
38
+ * Restricts the height of the dropdown's scrollable body. When the content is taller,
39
+ * the body scrolls vertically while any sticky regions (e.g. a Filter search / clear) stay pinned.
40
+ * - `number` – fixed max height in pixels
41
+ * - `string` – any valid CSS length (e.g. `'20rem'`, `'50vh'`)
42
+ * @default undefined (no restriction)
43
+ */
44
+ maxHeight?: number | string;
37
45
  };
38
46
  export interface DropdownProps extends BreakpointSupport<DropdownBreakpointProps> {
39
47
  /**