@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,147 +1,179 @@
1
- import { jsxs as r, jsx as i } from "react/jsx-runtime";
2
- import { FloatingOverlay as q } from "../../../../../external/@floating-ui/react/dist/floating-ui.react.es.js";
3
- import l from "../../../../../external/classnames/index.es.js";
4
- import D, { useState as J, useEffect as K } from "react";
5
- import { Icon as d } from "../../base/icon/icon.es.js";
6
- import { Button as v } from "../../buttons/button/button.es.js";
7
- import { SideNavItem as w } from "../sidenav/components/sidenav-item/sidenav-item.es.js";
1
+ import { jsxs as m, jsx as t } from "react/jsx-runtime";
2
+ import { FloatingOverlay as Q } from "../../../../../external/@floating-ui/react/dist/floating-ui.react.es.js";
3
+ import c from "../../../../../external/classnames/index.es.js";
4
+ import V, { useState as T, useRef as W, useEffect as k, useLayoutEffect as X } from "react";
5
+ import { warnDeprecated as Y } from "../../../helpers/warn-deprecated/warn-deprecated.es.js";
6
+ import { Icon as p } from "../../base/icon/icon.es.js";
7
+ import { Button as g } from "../../buttons/button/button.es.js";
8
+ import { SideNavItem as G } from "../sidenav/components/sidenav-item/sidenav-item.es.js";
8
9
  import n from "../sidenav/sidenav.module.scss.es.js";
9
- import { useLabels as Q } from "../../../providers/label-provider/use-labels.es.js";
10
- const U = ({
11
- navItems: _,
12
- ariaLabel: x,
13
- linkAs: b,
14
- isOpen: G,
15
- onClose: o,
16
- showOverlay: P = !0,
17
- id: R,
18
- className: B
10
+ import { useLabels as Z } from "../../../providers/label-provider/use-labels.es.js";
11
+ const A = typeof window < "u" ? X : k, O = (r) => {
12
+ let u = (r == null ? void 0 : r.parentElement) ?? null;
13
+ for (; u; ) {
14
+ const o = getComputedStyle(u);
15
+ if (o.transform !== "none" || o.perspective !== "none" || o.filter !== "" && o.filter !== "none" || /\b(transform|perspective|filter)\b/.test(o.willChange) || /\b(layout|paint|strict|content)\b/.test(o.contain))
16
+ return u;
17
+ u = u.parentElement;
18
+ }
19
+ return null;
20
+ }, ee = ({
21
+ navItems: r,
22
+ ariaLabel: u,
23
+ linkAs: o,
24
+ isOpen: h,
25
+ onClose: v,
26
+ showOverlay: f = !0,
27
+ id: P,
28
+ className: F
19
29
  }) => {
20
- var f, I, C, L, S, y, M;
21
- const { getLabel: p } = Q(), [s, c] = J([{ items: _ }]);
22
- K(() => {
23
- c([{ items: _ }]);
24
- }, [_]);
25
- const t = s[s.length - 1], j = s.length === 1, N = (e) => {
26
- var u;
27
- const a = !!(e.subItems || e.subItemGroups), m = !!(e.href || e.to);
28
- if (!a) {
29
- o();
30
+ var M, S, R, x, E, z, B;
31
+ const { getLabel: N } = Z(), [s, b] = T([{ items: r }]), y = W(null), [j, w] = T("var(--layout-header-height)");
32
+ k(() => {
33
+ b([{ items: r }]);
34
+ }, [r]), A(() => {
35
+ if (!h || !f || typeof document > "u") return;
36
+ const e = O(y.current), i = (e ?? document).querySelector("header") ?? document.querySelector("header");
37
+ if (!i) {
38
+ w("var(--layout-header-height)");
30
39
  return;
31
40
  }
32
- const h = ((u = e.subItemGroups) == null ? void 0 : u.flatMap((O) => O.subItems)) || e.subItems || [];
33
- c([
41
+ const l = () => {
42
+ const _ = e ? e.getBoundingClientRect().top : 0;
43
+ w(`${Math.max(0, Math.round(i.getBoundingClientRect().bottom - _))}px`);
44
+ };
45
+ l(), window.addEventListener("resize", l);
46
+ let a;
47
+ return typeof ResizeObserver < "u" && (a = new ResizeObserver(l), a.observe(i), e && a.observe(e)), () => {
48
+ window.removeEventListener("resize", l), a == null || a.disconnect();
49
+ };
50
+ }, [h, f]), k(() => {
51
+ if (!h || !f || typeof document > "u") return;
52
+ const { body: e } = document, i = e.style.overflow;
53
+ return e.style.overflow = "hidden", () => {
54
+ e.style.overflow = i;
55
+ };
56
+ }, [h, f]);
57
+ const d = s[s.length - 1], q = s.length === 1, I = (e) => {
58
+ var _;
59
+ const i = !!(e.subItems || e.subItemGroups), l = !!(e.href || e.to);
60
+ if (!i) {
61
+ v();
62
+ return;
63
+ }
64
+ const a = ((_ = e.subItemGroups) == null ? void 0 : _.flatMap((K) => K.subItems)) || e.subItems || [];
65
+ b([
34
66
  ...s,
35
67
  {
36
- items: h,
68
+ items: a,
37
69
  parent: e,
38
- renderParentLink: m
70
+ renderParentLink: l
39
71
  }
40
72
  ]);
41
- }, z = () => {
42
- c(s.slice(0, -1));
43
- }, F = () => {
44
- c([s[0]]);
45
- }, T = ((I = (f = t.parent) == null ? void 0 : f.subItems) == null ? void 0 : I.length) ?? ((L = (C = t.parent) == null ? void 0 : C.subItemGroups) == null ? void 0 : L.length), E = s.length > 1 && !(t.renderParentLink && T), k = (e, a) => a === 1 ? !(e.subItems || e.subItemGroups) ? /* @__PURE__ */ i(
46
- w,
73
+ }, D = () => {
74
+ b(s.slice(0, -1));
75
+ }, H = () => {
76
+ b([s[0]]);
77
+ }, U = ((S = (M = d.parent) == null ? void 0 : M.subItems) == null ? void 0 : S.length) ?? ((x = (R = d.parent) == null ? void 0 : R.subItemGroups) == null ? void 0 : x.length), $ = s.length > 1 && !(d.renderParentLink && U), C = (e, i) => i === 1 ? !(e.subItems || e.subItemGroups) ? /* @__PURE__ */ t(
78
+ G,
47
79
  {
48
80
  ...e,
49
- as: b,
50
- level: a,
51
- onItemClick: o,
52
- className: l(n["tedi-sidenav__item--mobile"], e.className)
81
+ as: o,
82
+ level: i,
83
+ onItemClick: v,
84
+ className: c(n["tedi-sidenav__item--mobile"], e.className)
53
85
  }
54
- ) : /* @__PURE__ */ i("li", { className: l(n["tedi-sidenav__item"], n["tedi-sidenav__item--mobile"]), children: /* @__PURE__ */ r("button", { onClick: () => N(e), className: n["tedi-sidenav__link"], children: [
55
- e.icon && /* @__PURE__ */ i(
56
- d,
86
+ ) : /* @__PURE__ */ t("li", { className: c(n["tedi-sidenav__item"], n["tedi-sidenav__item--mobile"]), children: /* @__PURE__ */ m("button", { onClick: () => I(e), className: n["tedi-sidenav__link"], children: [
87
+ e.icon && /* @__PURE__ */ t(
88
+ p,
57
89
  {
58
90
  name: typeof e.icon == "string" ? e.icon : e.icon.name,
59
91
  color: "white",
60
92
  className: n["tedi-sidenav__icon"]
61
93
  }
62
94
  ),
63
- /* @__PURE__ */ i("span", { className: n["tedi-sidenav__title"], children: e.children }),
64
- /* @__PURE__ */ i(d, { name: "expand_more", color: "white", className: n["tedi-sidenav__toggle-icon"] })
65
- ] }) }) : H(e, a), H = (e, a) => {
66
- const m = !!(e.href || e.to), h = !!(e.subItems || e.subItemGroups);
67
- return m ? /* @__PURE__ */ i(
68
- w,
95
+ /* @__PURE__ */ t("span", { className: n["tedi-sidenav__title"], children: e.children }),
96
+ /* @__PURE__ */ t(p, { name: "expand_more", color: "white", className: n["tedi-sidenav__toggle-icon"] })
97
+ ] }) }) : J(e, i), J = (e, i) => {
98
+ const l = !!(e.href || e.to), a = !!(e.subItems || e.subItemGroups);
99
+ return l ? /* @__PURE__ */ t(
100
+ G,
69
101
  {
70
102
  ...e,
71
- as: b,
72
- level: a,
103
+ as: o,
104
+ level: i,
73
105
  icon: void 0,
74
- onItemClick: o,
75
- className: l(n["tedi-sidenav__sub-item"], e.className)
106
+ onItemClick: v,
107
+ className: c(n["tedi-sidenav__sub-item"], e.className)
76
108
  }
77
- ) : /* @__PURE__ */ i("li", { className: l(n["tedi-sidenav__item"]), children: /* @__PURE__ */ r(
78
- v,
109
+ ) : /* @__PURE__ */ t("li", { className: c(n["tedi-sidenav__item"]), children: /* @__PURE__ */ m(
110
+ g,
79
111
  {
80
112
  noStyle: !0,
81
- onClick: () => h ? N(e) : o(),
113
+ onClick: () => a ? I(e) : v(),
82
114
  className: n["tedi-sidenav__link"],
83
115
  children: [
84
- /* @__PURE__ */ i("span", { className: n["tedi-sidenav__title"], children: e.children }),
85
- h ? /* @__PURE__ */ i(d, { name: "expand_more", color: "white", className: n["tedi-sidenav__toggle-icon"] }) : null
116
+ /* @__PURE__ */ t("span", { className: n["tedi-sidenav__title"], children: e.children }),
117
+ a ? /* @__PURE__ */ t(p, { name: "expand_more", color: "white", className: n["tedi-sidenav__toggle-icon"] }) : null
86
118
  ]
87
119
  }
88
120
  ) });
89
- }, g = /* @__PURE__ */ r(
121
+ }, L = /* @__PURE__ */ m(
90
122
  "nav",
91
123
  {
92
124
  "data-name": "mobile-sidenav",
93
- className: l(n["tedi-sidenav"], n["tedi-sidenav--mobile"], B),
94
- "aria-label": x,
95
- id: R,
125
+ className: c(n["tedi-sidenav"], n["tedi-sidenav--mobile"], F),
126
+ "aria-label": u,
127
+ id: P,
96
128
  children: [
97
- /* @__PURE__ */ i("div", { className: n["tedi-sidenav__list"], children: !j && /* @__PURE__ */ r("div", { className: n["tedi-sidenav__back-buttons"], children: [
98
- s.length > 1 && /* @__PURE__ */ r(
99
- v,
129
+ /* @__PURE__ */ t("div", { className: n["tedi-sidenav__list"], children: !q && /* @__PURE__ */ m("div", { className: n["tedi-sidenav__back-buttons"], children: [
130
+ s.length > 1 && /* @__PURE__ */ m(
131
+ g,
100
132
  {
101
133
  noStyle: !0,
102
- onClick: F,
103
- className: l(n["tedi-sidenav__link"], n["tedi-sidenav__back-button"]),
134
+ onClick: H,
135
+ className: c(n["tedi-sidenav__link"], n["tedi-sidenav__back-button"]),
104
136
  children: [
105
- /* @__PURE__ */ i(d, { name: "arrow_back", size: 16, color: "white" }),
106
- /* @__PURE__ */ i("span", { children: p("sidenav.backToMainMenu") })
137
+ /* @__PURE__ */ t(p, { name: "arrow_back", size: 16, color: "white" }),
138
+ /* @__PURE__ */ t("span", { children: N("sidenav.backToMainMenu") })
107
139
  ]
108
140
  }
109
141
  ),
110
- s.length > 2 && /* @__PURE__ */ r(
111
- v,
142
+ s.length > 2 && /* @__PURE__ */ m(
143
+ g,
112
144
  {
113
145
  noStyle: !0,
114
- onClick: z,
115
- className: l(n["tedi-sidenav__link"], n["tedi-sidenav__back-button"]),
146
+ onClick: D,
147
+ className: c(n["tedi-sidenav__link"], n["tedi-sidenav__back-button"]),
116
148
  children: [
117
- /* @__PURE__ */ i(d, { name: "arrow_back", size: 16, color: "white" }),
118
- /* @__PURE__ */ i("span", { children: ((y = (S = s[s.length - 1]) == null ? void 0 : S.parent) == null ? void 0 : y.children) + " " + p("sidenav.backtoMenu") })
149
+ /* @__PURE__ */ t(p, { name: "arrow_back", size: 16, color: "white" }),
150
+ /* @__PURE__ */ t("span", { children: ((z = (E = s[s.length - 1]) == null ? void 0 : E.parent) == null ? void 0 : z.children) + " " + N("sidenav.backtoMenu") })
119
151
  ]
120
152
  }
121
153
  )
122
154
  ] }) }),
123
- E && /* @__PURE__ */ i("div", { className: l(n["tedi-sidenav__subheading"], n["tedi-sidenav__subheading--mobile"]), children: (M = t.parent) == null ? void 0 : M.children }),
124
- /* @__PURE__ */ r("ul", { className: n["tedi-sidenav__list"], role: "menubar", children: [
125
- t.renderParentLink && t.parent && /* @__PURE__ */ i("li", { className: n["tedi-sidenav__list-item"], children: /* @__PURE__ */ i("div", { className: l(n["tedi-sidenav__collapse"]), children: k(t.parent, s.length) }) }),
126
- !t.renderParentLink && t.items.map((e, a) => /* @__PURE__ */ i(D.Fragment, { children: k(e, s.length) }, e.id || a))
155
+ $ && /* @__PURE__ */ t("div", { className: c(n["tedi-sidenav__subheading"], n["tedi-sidenav__subheading--mobile"]), children: (B = d.parent) == null ? void 0 : B.children }),
156
+ /* @__PURE__ */ m("ul", { className: n["tedi-sidenav__list"], children: [
157
+ d.renderParentLink && d.parent && /* @__PURE__ */ t("li", { className: n["tedi-sidenav__list-item"], children: /* @__PURE__ */ t("div", { className: c(n["tedi-sidenav__collapse"]), children: C(d.parent, s.length) }) }),
158
+ !d.renderParentLink && d.items.map((e, i) => /* @__PURE__ */ t(V.Fragment, { children: C(e, s.length) }, e.id || i))
127
159
  ] })
128
160
  ]
129
161
  }
130
162
  );
131
- return G ? P ? /* @__PURE__ */ i(
132
- q,
163
+ return h ? f ? /* @__PURE__ */ t(
164
+ Q,
133
165
  {
134
- style: {
135
- top: "0",
136
- position: "relative",
137
- height: "100%"
138
- },
166
+ ref: y,
167
+ style: { top: j },
139
168
  className: n["tedi-sidenav__overlay"],
140
- children: g
169
+ onMouseDown: (e) => {
170
+ e.target === e.currentTarget && v();
171
+ },
172
+ children: L
141
173
  }
142
- ) : g : null;
143
- }, ie = U;
174
+ ) : L : null;
175
+ }, ue = (r) => (Y("SideNavMobile", "Use `MobileNav` (same component, vendor-neutral name)."), /* @__PURE__ */ t(ee, { ...r }));
144
176
  export {
145
- U as MobileNav,
146
- ie as SideNavMobile
177
+ ee as MobileNav,
178
+ ue as SideNavMobile
147
179
  };
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-sidenav":"tedi-sidenav-8ef80858","tedi-sidenav__collapse":"tedi-sidenav__collapse-2c595f9e","tedi-sidenav__item":"tedi-sidenav__item-919825a5","tedi-sidenav--has-dividers":"tedi-sidenav--has-dividers-ceb44380","tedi-sidenav__link":"tedi-sidenav__link-e66a922a","tedi-sidenav--collapsed":"tedi-sidenav--collapsed-b7b406f9","tedi-sidenav__title":"tedi-sidenav__title-3bec8b71","tedi-sidenav__bullet":"tedi-sidenav__bullet-c51cd2ba","tedi-sidenav__link--active":"tedi-sidenav__link--active-cf22fc56","tedi-sidenav__item--has-children":"tedi-sidenav__item--has-children-71df3699","tedi-sidenav__toggle-icon":"tedi-sidenav__toggle-icon-63662692","tedi-sidenav__overlay":"tedi-sidenav__overlay-5feeb550","tedi-sidenav__item--level-2":"tedi-sidenav__item--level-2-3ed1a7e8","tedi-sidenav__list":"tedi-sidenav__list-58d1ae41","tedi-sidenav__item--with-tree":"tedi-sidenav__item--with-tree-39198d0d","tedi-sidenav__sub-item":"tedi-sidenav__sub-item-c714d866","tedi-sidenav__link--has-children-link":"tedi-sidenav__link--has-children-link-1d49019f","tedi-sidenav__link-collapse-wrapper":"tedi-sidenav__link-collapse-wrapper-cd74f534","tedi-sidenav__item--mobile":"tedi-sidenav__item--mobile-6571c3cc","tedi-sidenav__item--current":"tedi-sidenav__item--current-95a00f8f","tedi-sidenav__item--medium":"tedi-sidenav__item--medium-995f73f7","tedi-sidenav__icon":"tedi-sidenav__icon-b7155dbb","tedi-sidenav__item--small":"tedi-sidenav__item--small-1952afb5","tedi-sidenav__back-button":"tedi-sidenav__back-button-c8e74f92","tedi-sidenav__subheading":"tedi-sidenav__subheading-8cec3c0c","tedi-sidenav__subheading--mobile":"tedi-sidenav__subheading--mobile-e24704b2","sidenav__item--current":"sidenav__item--current-f5468e85"};exports.default=e;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-sidenav":"tedi-sidenav-8ef80858","tedi-sidenav__collapse":"tedi-sidenav__collapse-2c595f9e","tedi-sidenav__item":"tedi-sidenav__item-919825a5","tedi-sidenav--has-dividers":"tedi-sidenav--has-dividers-ceb44380","tedi-sidenav__link":"tedi-sidenav__link-e66a922a","tedi-sidenav--collapsed":"tedi-sidenav--collapsed-b7b406f9","tedi-sidenav__title":"tedi-sidenav__title-3bec8b71","tedi-sidenav__bullet":"tedi-sidenav__bullet-c51cd2ba","tedi-sidenav__link--active":"tedi-sidenav__link--active-cf22fc56","tedi-sidenav__item--has-children":"tedi-sidenav__item--has-children-71df3699","tedi-sidenav__toggle-icon":"tedi-sidenav__toggle-icon-63662692","tedi-sidenav__overlay":"tedi-sidenav__overlay-5feeb550","tedi-sidenav--mobile":"tedi-sidenav--mobile-98e75893","tedi-sidenav__item--level-2":"tedi-sidenav__item--level-2-3ed1a7e8","tedi-sidenav__list":"tedi-sidenav__list-58d1ae41","tedi-sidenav__item--with-tree":"tedi-sidenav__item--with-tree-39198d0d","tedi-sidenav__sub-item":"tedi-sidenav__sub-item-c714d866","tedi-sidenav__link--has-children-link":"tedi-sidenav__link--has-children-link-1d49019f","tedi-sidenav__link-collapse-wrapper":"tedi-sidenav__link-collapse-wrapper-cd74f534","tedi-sidenav__item--mobile":"tedi-sidenav__item--mobile-6571c3cc","tedi-sidenav__item--current":"tedi-sidenav__item--current-95a00f8f","tedi-sidenav__item--medium":"tedi-sidenav__item--medium-995f73f7","tedi-sidenav__icon":"tedi-sidenav__icon-b7155dbb","tedi-sidenav__item--small":"tedi-sidenav__item--small-1952afb5","tedi-sidenav__back-button":"tedi-sidenav__back-button-c8e74f92","tedi-sidenav__subheading":"tedi-sidenav__subheading-8cec3c0c","tedi-sidenav__subheading--mobile":"tedi-sidenav__subheading--mobile-e24704b2","sidenav__item--current":"sidenav__item--current-f5468e85"};exports.default=e;
@@ -11,6 +11,7 @@ const e = {
11
11
  "tedi-sidenav__item--has-children": "tedi-sidenav__item--has-children-71df3699",
12
12
  "tedi-sidenav__toggle-icon": "tedi-sidenav__toggle-icon-63662692",
13
13
  "tedi-sidenav__overlay": "tedi-sidenav__overlay-5feeb550",
14
+ "tedi-sidenav--mobile": "tedi-sidenav--mobile-98e75893",
14
15
  "tedi-sidenav__item--level-2": "tedi-sidenav__item--level-2-3ed1a7e8",
15
16
  "tedi-sidenav__list": "tedi-sidenav__list-58d1ae41",
16
17
  "tedi-sidenav__item--with-tree": "tedi-sidenav__item--with-tree-39198d0d",
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("react/jsx-runtime"),h=require("../../../../../external/classnames/index.cjs.js"),q=require("react"),b=require("../../../../../external/react-sticky-box/dist/index.cjs.js"),e=require("./affix.module.scss.cjs.js"),g=require("../../../../community/components/layout/layout-context.cjs.js"),$=require("../../../helpers/hooks/use-element-size.cjs.js"),j=c=>{const{children:n,relative:l=["header"],className:x,position:f="sticky",top:t=1.5,bottom:i,right:a,left:d}=c,{headerBottomElement:p}=q.useContext(g.LayoutContext),o=$.useElementSize(p),r=h.default(e.default["tedi-affix"],x,e.default[`tedi-affix--${f}`],{[e.default[`tedi-affix--top-${t}`.replace(".","-")]]:typeof t<"u"&&f==="fixed",[e.default[`tedi-affix--bottom-${i}`.replace(".","-")]]:typeof i<"u",[e.default[`tedi-affix--left-${d}`.replace(".","-")]]:typeof d<"u",[e.default[`tedi-affix--right-${a}`.replace(".","-")]]:typeof a<"u"});if(f==="fixed")return u.jsx("div",{className:r,children:n});const s=(typeof t=="number"?t:0)*16,m=l.includes("header")?s+((o==null?void 0:o.height)||0):s,y=(typeof i=="number"?i:0)*16;return u.jsx(b.default,{offsetTop:m,offsetBottom:y,className:r,children:n})};exports.Affix=j;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("react/jsx-runtime"),$=require("../../../../../external/classnames/index.cjs.js"),b=require("react"),h=require("../../../../../external/react-sticky-box/dist/index.cjs.js"),e=require("./affix.module.scss.cjs.js"),q=require("../../../../community/components/layout/layout-context.cjs.js"),g=require("../../../helpers/hooks/use-element-size.cjs.js"),j=x=>{const{children:n,relative:p=["header"],className:m,position:i="sticky",top:t=1.5,bottom:f,right:s,left:a}=x,{headerBottomElement:y}=b.useContext(q.LayoutContext),o=g.useElementSize(y),d=$.default(e.default["tedi-affix"],m,e.default[`tedi-affix--${i}`],{[e.default[`tedi-affix--top-${t}`.replace(".","-")]]:typeof t<"u"&&i==="fixed",[e.default[`tedi-affix--bottom-${f}`.replace(".","-")]]:typeof f<"u",[e.default[`tedi-affix--left-${a}`.replace(".","-")]]:typeof a<"u",[e.default[`tedi-affix--right-${s}`.replace(".","-")]]:typeof s<"u"});if(i==="fixed")return l.jsx("div",{className:d,children:n});const r=(typeof t=="number"?t:0)*16,u=p.includes("header")?r+((o==null?void 0:o.height)||0):r,c=(typeof f=="number"?f:0)*16;return l.jsx(h.default,{offsetTop:u,offsetBottom:c,className:d,style:{"--tedi-affix-offset-top":`${u}px`,"--tedi-affix-offset-bottom":`${c}px`},children:n})};exports.Affix=j;
@@ -1,21 +1,33 @@
1
- import { jsx as p } from "react/jsx-runtime";
1
+ import { jsx as c } from "react/jsx-runtime";
2
2
  import h from "../../../../../external/classnames/index.es.js";
3
3
  import { useContext as $ } from "react";
4
4
  import b from "../../../../../external/react-sticky-box/dist/index.es.js";
5
5
  import e from "./affix.module.scss.es.js";
6
6
  import { LayoutContext as g } from "../../../../community/components/layout/layout-context.es.js";
7
7
  import { useElementSize as N } from "../../../helpers/hooks/use-element-size.es.js";
8
- const L = (d) => {
9
- const { children: r, relative: c = ["header"], className: l, position: f = "sticky", top: t = 1.5, bottom: o, right: n, left: s } = d, { headerBottomElement: u } = $(g), i = N(u), m = h(e["tedi-affix"], l, e[`tedi-affix--${f}`], {
8
+ const L = (l) => {
9
+ const { children: r, relative: x = ["header"], className: u, position: f = "sticky", top: t = 1.5, bottom: o, right: s, left: n } = l, { headerBottomElement: y } = $(g), i = N(y), p = h(e["tedi-affix"], u, e[`tedi-affix--${f}`], {
10
10
  [e[`tedi-affix--top-${t}`.replace(".", "-")]]: typeof t < "u" && f === "fixed",
11
11
  [e[`tedi-affix--bottom-${o}`.replace(".", "-")]]: typeof o < "u",
12
- [e[`tedi-affix--left-${s}`.replace(".", "-")]]: typeof s < "u",
13
- [e[`tedi-affix--right-${n}`.replace(".", "-")]]: typeof n < "u"
12
+ [e[`tedi-affix--left-${n}`.replace(".", "-")]]: typeof n < "u",
13
+ [e[`tedi-affix--right-${s}`.replace(".", "-")]]: typeof s < "u"
14
14
  });
15
15
  if (f === "fixed")
16
- return /* @__PURE__ */ p("div", { className: m, children: r });
17
- const a = (typeof t == "number" ? t : 0) * 16, x = c.includes("header") ? a + ((i == null ? void 0 : i.height) || 0) : a, y = (typeof o == "number" ? o : 0) * 16;
18
- return /* @__PURE__ */ p(b, { offsetTop: x, offsetBottom: y, className: m, children: r });
16
+ return /* @__PURE__ */ c("div", { className: p, children: r });
17
+ const a = (typeof t == "number" ? t : 0) * 16, m = x.includes("header") ? a + ((i == null ? void 0 : i.height) || 0) : a, d = (typeof o == "number" ? o : 0) * 16;
18
+ return /* @__PURE__ */ c(
19
+ b,
20
+ {
21
+ offsetTop: m,
22
+ offsetBottom: d,
23
+ className: p,
24
+ style: {
25
+ "--tedi-affix-offset-top": `${m}px`,
26
+ "--tedi-affix-offset-bottom": `${d}px`
27
+ },
28
+ children: r
29
+ }
30
+ );
19
31
  };
20
32
  export {
21
33
  L as Affix
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),N=require("../../../../../../../external/classnames/index.cjs.js"),s=require("react"),x=require("../../../../base/typography/text/text.cjs.js"),C=require("../../../../buttons/collapse-button/collapse-button.cjs.js"),E=require("../../../../overlays/sheet/sheet.cjs.js"),c=require("../../table-of-contents.cjs.js"),t=require("../../table-of-contents.module.scss.cjs.js"),S=require("../table-of-contents-list/table-of-contents-list.cjs.js"),y=require("../../../../../providers/label-provider/use-labels.cjs.js"),p=g=>{const{children:d,heading:u,ariaLabel:_,activeId:l,numbered:b=!1,sticky:j=!0,className:L}=g,{getLabel:f}=y.useLabels(),[n,a]=s.useState(!1),[o,O]=s.useState(null);s.useEffect(()=>{if(!n||!o)return;const v=q=>{q.target.closest("a, button")&&a(!1)};return o.addEventListener("click",v),()=>o.removeEventListener("click",v)},[n,o]);const i=(u===void 0?f("table-of-contents.title"):u)??f("table-of-contents.title"),h=_||i,r=s.useMemo(()=>c.childrenToNodes(d),[d]),m=s.useMemo(()=>c.buildActiveTrail(r,l),[r,l]),T=s.useMemo(()=>({activeId:l,numbered:b,ariaLabel:h,activeTrail:m}),[l,b,h,m]);return e.jsxs(c.TableOfContentsContext.Provider,{value:T,children:[e.jsxs("div",{className:N.default(t.default["tedi-table-of-contents__bar"],{[t.default["tedi-table-of-contents__bar--static"]]:!j},L),children:[e.jsx(x.Text,{modifiers:"bold",className:t.default["tedi-table-of-contents__bar-title"],children:i}),e.jsx(C.CollapseButton,{open:n,onOpenChange:a,underline:!1,"aria-haspopup":"dialog"})]}),e.jsx(E.Sheet,{open:n,onToggle:a,ariaLabel:i,className:t.default["tedi-table-of-contents__sheet"],header:e.jsxs("div",{className:t.default["tedi-table-of-contents__sheet-header"],children:[e.jsx(x.Text,{modifiers:"bold",className:t.default["tedi-table-of-contents__bar-title"],children:i}),e.jsx(C.CollapseButton,{open:n,onOpenChange:a,underline:!1})]}),children:e.jsx("div",{ref:O,className:t.default["tedi-table-of-contents"],children:e.jsx(S.TableOfContentsList,{nodes:r,heading:null})})})]})};p.displayName="TableOfContentsCollapsible";exports.TableOfContentsCollapsible=p;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),w=require("../../../../../../../external/classnames/index.cjs.js"),n=require("react"),T=require("../../../../base/typography/text/text.cjs.js"),q=require("../../../../buttons/collapse-button/collapse-button.cjs.js"),H=require("../../../../overlays/sheet/sheet.cjs.js"),b=require("../../table-of-contents.cjs.js"),t=require("../../table-of-contents.module.scss.cjs.js"),Y=require("../table-of-contents-list/table-of-contents-list.cjs.js"),F=require("../../../../../providers/label-provider/use-labels.cjs.js"),N=E=>{const{children:m,heading:h,ariaLabel:S,activeId:o,numbered:v=!1,bordered:y=!1,defaultOpen:p=!0,sticky:c=!0,hideOnScroll:x=!1,className:M}=E,{getLabel:C}=F.useLabels(),[l,i]=n.useState(!1),[k,_]=n.useState(!1),[r,A]=n.useState(null);n.useEffect(()=>{if(!x||!c){_(!1);return}let a=window.scrollY,s=0;const O=()=>{s||(s=window.requestAnimationFrame(()=>{s=0;const f=window.scrollY,j=f-a;Math.abs(j)>4&&(_(j>0&&f>0),a=f)}))};return window.addEventListener("scroll",O,{passive:!0}),()=>{window.removeEventListener("scroll",O),s&&window.cancelAnimationFrame(s)}},[x,c]),n.useEffect(()=>{if(!l||!r)return;const a=s=>{s.target.closest("a, button")&&i(!1)};return r.addEventListener("click",a),()=>r.removeEventListener("click",a)},[l,r]);const d=(h===void 0?C("table-of-contents.title"):h)??C("table-of-contents.title"),g=S||d,u=n.useMemo(()=>b.childrenToNodes(m),[m]),L=n.useMemo(()=>b.buildActiveTrail(u,o),[u,o]),B=n.useMemo(()=>({activeId:o,numbered:v,ariaLabel:g,activeTrail:L,defaultOpen:p}),[o,v,g,L,p]);return e.jsxs(b.TableOfContentsContext.Provider,{value:B,children:[e.jsxs("div",{className:w.default(t.default["tedi-table-of-contents__bar"],{[t.default["tedi-table-of-contents__bar--static"]]:!c,[t.default["tedi-table-of-contents__bar--hidden"]]:k&&!l},M),children:[e.jsx(T.Text,{modifiers:"bold",className:t.default["tedi-table-of-contents__bar-title"],children:d}),e.jsx(q.CollapseButton,{open:l,onOpenChange:i,underline:!1,"aria-haspopup":"dialog"})]}),e.jsx(H.Sheet,{open:l,onToggle:i,ariaLabel:d,className:t.default["tedi-table-of-contents__sheet"],header:e.jsxs("div",{className:t.default["tedi-table-of-contents__sheet-header"],children:[e.jsx(T.Text,{modifiers:"bold",className:t.default["tedi-table-of-contents__bar-title"],children:d}),e.jsx(q.CollapseButton,{open:l,onOpenChange:i,underline:!1})]}),children:e.jsx("div",{ref:A,className:w.default(t.default["tedi-table-of-contents"],{[t.default["tedi-table-of-contents--bordered"]]:y}),children:e.jsx(Y.TableOfContentsList,{nodes:u,heading:null})})})]})};N.displayName="TableOfContentsCollapsible";exports.TableOfContentsCollapsible=N;
@@ -1,10 +1,18 @@
1
1
  import { TableOfContentsProps } from '../../table-of-contents';
2
- export interface TableOfContentsCollapsibleProps extends Pick<TableOfContentsProps, 'children' | 'heading' | 'ariaLabel' | 'activeId' | 'numbered' | 'className'> {
2
+ export interface TableOfContentsCollapsibleProps extends Pick<TableOfContentsProps, 'children' | 'heading' | 'ariaLabel' | 'activeId' | 'numbered' | 'bordered' | 'defaultOpen' | 'className'> {
3
3
  /**
4
4
  * Pin the bar to the bottom of the viewport. Set `false` to render it inline.
5
5
  * @default true
6
6
  */
7
7
  sticky?: boolean;
8
+ /**
9
+ * Mobile-only behaviour of this `TableOfContents.Collapsible` bar — there is no desktop equivalent.
10
+ * When the bar is pinned (`sticky`), auto-hide it while the page scrolls down and reveal it again on
11
+ * scroll up, so it stays out of the way while reading but is one gesture away. No effect when
12
+ * `sticky` is `false`.
13
+ * @default false
14
+ */
15
+ hideOnScroll?: boolean;
8
16
  }
9
17
  /**
10
18
  * Mobile variant of `TableOfContents`: a bottom bar that opens the list in a bottom-sheet overlay.
@@ -1,58 +1,97 @@
1
- import { jsxs as r, jsx as e } from "react/jsx-runtime";
2
- import k from "../../../../../../../external/classnames/index.es.js";
3
- import { useState as v, useEffect as y, useMemo as c } from "react";
4
- import { Text as g } from "../../../../base/typography/text/text.es.js";
5
- import { CollapseButton as _ } from "../../../../buttons/collapse-button/collapse-button.es.js";
6
- import { Sheet as j } from "../../../../overlays/sheet/sheet.es.js";
7
- import { childrenToNodes as H, buildActiveTrail as S, TableOfContentsContext as A } from "../../table-of-contents.es.js";
8
- import t from "../../table-of-contents.module.scss.es.js";
9
- import { TableOfContentsList as B } from "../table-of-contents-list/table-of-contents-list.es.js";
10
- import { useLabels as I } from "../../../../../providers/label-provider/use-labels.es.js";
11
- const M = (N) => {
12
- const { children: d, heading: m, ariaLabel: C, activeId: n, numbered: f = !1, sticky: L = !0, className: T } = N, { getLabel: b } = I(), [o, a] = v(!1), [s, O] = v(null);
13
- y(() => {
14
- if (!o || !s) return;
15
- const u = (E) => {
16
- E.target.closest("a, button") && a(!1);
1
+ import { jsxs as m, jsx as n } from "react/jsx-runtime";
2
+ import E from "../../../../../../../external/classnames/index.es.js";
3
+ import { useState as b, useEffect as x, useMemo as u } from "react";
4
+ import { Text as y } from "../../../../base/typography/text/text.es.js";
5
+ import { CollapseButton as S } from "../../../../buttons/collapse-button/collapse-button.es.js";
6
+ import { Sheet as q } from "../../../../overlays/sheet/sheet.es.js";
7
+ import { childrenToNodes as B, buildActiveTrail as I, TableOfContentsContext as P } from "../../table-of-contents.es.js";
8
+ import e from "../../table-of-contents.module.scss.es.js";
9
+ import { TableOfContentsList as V } from "../table-of-contents-list/table-of-contents-list.es.js";
10
+ import { useLabels as z } from "../../../../../providers/label-provider/use-labels.es.js";
11
+ const D = (k) => {
12
+ const {
13
+ children: h,
14
+ heading: p,
15
+ ariaLabel: A,
16
+ activeId: s,
17
+ numbered: v = !1,
18
+ bordered: H = !1,
19
+ defaultOpen: _ = !0,
20
+ sticky: d = !0,
21
+ hideOnScroll: g = !1,
22
+ className: Y
23
+ } = k, { getLabel: w } = z(), [o, a] = b(!1), [j, L] = b(!1), [i, F] = b(null);
24
+ x(() => {
25
+ if (!g || !d) {
26
+ L(!1);
27
+ return;
28
+ }
29
+ let l = window.scrollY, t = 0;
30
+ const O = () => {
31
+ t || (t = window.requestAnimationFrame(() => {
32
+ t = 0;
33
+ const f = window.scrollY, T = f - l;
34
+ Math.abs(T) > 4 && (L(T > 0 && f > 0), l = f);
35
+ }));
17
36
  };
18
- return s.addEventListener("click", u), () => s.removeEventListener("click", u);
19
- }, [o, s]);
20
- const l = (m === void 0 ? b("table-of-contents.title") : m) ?? b("table-of-contents.title"), p = C || l, i = c(() => H(d), [d]), h = c(() => S(i, n), [i, n]), x = c(
21
- () => ({ activeId: n, numbered: f, ariaLabel: p, activeTrail: h }),
22
- [n, f, p, h]
37
+ return window.addEventListener("scroll", O, { passive: !0 }), () => {
38
+ window.removeEventListener("scroll", O), t && window.cancelAnimationFrame(t);
39
+ };
40
+ }, [g, d]), x(() => {
41
+ if (!o || !i) return;
42
+ const l = (t) => {
43
+ t.target.closest("a, button") && a(!1);
44
+ };
45
+ return i.addEventListener("click", l), () => i.removeEventListener("click", l);
46
+ }, [o, i]);
47
+ const r = (p === void 0 ? w("table-of-contents.title") : p) ?? w("table-of-contents.title"), N = A || r, c = u(() => B(h), [h]), C = u(() => I(c, s), [c, s]), M = u(
48
+ () => ({ activeId: s, numbered: v, ariaLabel: N, activeTrail: C, defaultOpen: _ }),
49
+ [s, v, N, C, _]
23
50
  );
24
- return /* @__PURE__ */ r(A.Provider, { value: x, children: [
25
- /* @__PURE__ */ r(
51
+ return /* @__PURE__ */ m(P.Provider, { value: M, children: [
52
+ /* @__PURE__ */ m(
26
53
  "div",
27
54
  {
28
- className: k(
29
- t["tedi-table-of-contents__bar"],
30
- { [t["tedi-table-of-contents__bar--static"]]: !L },
31
- T
55
+ className: E(
56
+ e["tedi-table-of-contents__bar"],
57
+ {
58
+ [e["tedi-table-of-contents__bar--static"]]: !d,
59
+ [e["tedi-table-of-contents__bar--hidden"]]: j && !o
60
+ },
61
+ Y
32
62
  ),
33
63
  children: [
34
- /* @__PURE__ */ e(g, { modifiers: "bold", className: t["tedi-table-of-contents__bar-title"], children: l }),
35
- /* @__PURE__ */ e(_, { open: o, onOpenChange: a, underline: !1, "aria-haspopup": "dialog" })
64
+ /* @__PURE__ */ n(y, { modifiers: "bold", className: e["tedi-table-of-contents__bar-title"], children: r }),
65
+ /* @__PURE__ */ n(S, { open: o, onOpenChange: a, underline: !1, "aria-haspopup": "dialog" })
36
66
  ]
37
67
  }
38
68
  ),
39
- /* @__PURE__ */ e(
40
- j,
69
+ /* @__PURE__ */ n(
70
+ q,
41
71
  {
42
72
  open: o,
43
73
  onToggle: a,
44
- ariaLabel: l,
45
- className: t["tedi-table-of-contents__sheet"],
46
- header: /* @__PURE__ */ r("div", { className: t["tedi-table-of-contents__sheet-header"], children: [
47
- /* @__PURE__ */ e(g, { modifiers: "bold", className: t["tedi-table-of-contents__bar-title"], children: l }),
48
- /* @__PURE__ */ e(_, { open: o, onOpenChange: a, underline: !1 })
74
+ ariaLabel: r,
75
+ className: e["tedi-table-of-contents__sheet"],
76
+ header: /* @__PURE__ */ m("div", { className: e["tedi-table-of-contents__sheet-header"], children: [
77
+ /* @__PURE__ */ n(y, { modifiers: "bold", className: e["tedi-table-of-contents__bar-title"], children: r }),
78
+ /* @__PURE__ */ n(S, { open: o, onOpenChange: a, underline: !1 })
49
79
  ] }),
50
- children: /* @__PURE__ */ e("div", { ref: O, className: t["tedi-table-of-contents"], children: /* @__PURE__ */ e(B, { nodes: i, heading: null }) })
80
+ children: /* @__PURE__ */ n(
81
+ "div",
82
+ {
83
+ ref: F,
84
+ className: E(e["tedi-table-of-contents"], {
85
+ [e["tedi-table-of-contents--bordered"]]: H
86
+ }),
87
+ children: /* @__PURE__ */ n(V, { nodes: c, heading: null })
88
+ }
89
+ )
51
90
  }
52
91
  )
53
92
  ] });
54
93
  };
55
- M.displayName = "TableOfContentsCollapsible";
94
+ D.displayName = "TableOfContentsCollapsible";
56
95
  export {
57
- M as TableOfContentsCollapsible
96
+ D as TableOfContentsCollapsible
58
97
  };
@@ -15,6 +15,12 @@ export interface TableOfContentsItemProps {
15
15
  * Render a separator below the item.
16
16
  */
17
17
  separator?: boolean;
18
+ /**
19
+ * Trailing content shown at the end of the item's row (right-aligned) — e.g. a
20
+ * count `Tag` or `StatusBadge`. Kept out of the link so it isn't part of the
21
+ * link's accessible name.
22
+ */
23
+ slot?: React.ReactNode;
18
24
  }
19
25
  export declare const TableOfContentsItem: {
20
26
  (_props: TableOfContentsItemProps): JSX.Element | null;
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),b=require("../../../../../../../external/classnames/index.cjs.js"),N=require("react"),T=require("../../../../misc/separator/separator.cjs.js"),w=require("../../table-of-contents.cjs.js"),t=require("../../table-of-contents.module.scss.cjs.js"),r=({node:m,depth:c,index:i,numberPrefix:a})=>{const{activeId:_,numbered:o,activeTrail:p}=N.useContext(w.TableOfContentsContext),{id:n,content:x,children:s,separator:j}=m,C=!!(s!=null&&s.length),d=!!n&&n===_,h=C&&!!n&&p.has(n),O=Math.min(c,2),l=a?`${a}.${i+1}`:`${i+1}`,v=a?l:`${l}.`,q=o?"ol":"ul";return e.jsxs("li",{"aria-current":d?"true":void 0,className:b.default(t.default["tedi-table-of-contents__item"],{[t.default["tedi-table-of-contents__item--selected"]]:d}),children:[e.jsxs("span",{className:b.default(t.default["tedi-table-of-contents__row"],t.default[`tedi-table-of-contents__row--level-${O}`]),children:[o&&e.jsx("span",{className:t.default["tedi-table-of-contents__number"],"aria-hidden":"true",children:v}),e.jsx("span",{className:t.default["tedi-table-of-contents__content"],children:x})]}),h&&e.jsx(q,{className:t.default["tedi-table-of-contents__group"],children:s.map((u,f)=>e.jsx(r,{node:u,depth:c+1,index:f,numberPrefix:o?l:void 0},u.id??f))}),j&&e.jsx(T.Separator,{})]})};r.displayName="TableOfContentsRow";exports.TableOfContentsRow=r;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),_=require("../../../../../../../external/classnames/index.cjs.js"),w=require("react"),R=require("../../../../misc/separator/separator.cjs.js"),$=require("../../table-of-contents.cjs.js"),e=require("../../table-of-contents.module.scss.cjs.js"),r=({node:m,depth:c,index:d,numberPrefix:a})=>{const{activeId:p,numbered:o,activeTrail:x,defaultOpen:j}=w.useContext($.TableOfContentsContext),{id:n,content:v,children:s,separator:h,slot:i}=m,C=!!(s!=null&&s.length),u=!!n&&n===p,O=C&&(j||!!n&&x.has(n)),N=Math.min(c,2),l=a?`${a}.${d+1}`:`${d+1}`,q=a?l:`${l}.`,T=o?"ol":"ul";return t.jsxs("li",{"aria-current":u?"true":void 0,className:_.default(e.default["tedi-table-of-contents__item"],{[e.default["tedi-table-of-contents__item--selected"]]:u}),children:[t.jsxs("div",{className:_.default(e.default["tedi-table-of-contents__row"],e.default[`tedi-table-of-contents__row--level-${N}`]),children:[o&&t.jsx("span",{className:e.default["tedi-table-of-contents__number"],"aria-hidden":"true",children:q}),t.jsx("span",{className:e.default["tedi-table-of-contents__content"],children:v}),i!==void 0&&t.jsx("div",{className:e.default["tedi-table-of-contents__slot"],children:i})]}),O&&t.jsx(T,{className:e.default["tedi-table-of-contents__group"],children:s.map((f,b)=>t.jsx(r,{node:f,depth:c+1,index:b,numberPrefix:o?l:void 0},f.id??b))}),h&&t.jsx(R.Separator,{className:e.default["tedi-table-of-contents__separator"]})]})};r.displayName="TableOfContentsRow";exports.TableOfContentsRow=r;