@tedi-design-system/react 18.0.0-rc.6 → 18.0.0-rc.8

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 (93) hide show
  1. package/_virtual/index.cjs10.js +1 -1
  2. package/_virtual/index.cjs11.js +1 -1
  3. package/_virtual/index.cjs12.js +1 -1
  4. package/_virtual/index.cjs13.js +1 -1
  5. package/_virtual/index.cjs5.js +1 -1
  6. package/_virtual/index.cjs6.js +1 -1
  7. package/_virtual/index.cjs7.js +1 -1
  8. package/_virtual/index.cjs8.js +1 -1
  9. package/_virtual/index.cjs9.js +1 -1
  10. package/_virtual/index.es10.js +1 -1
  11. package/_virtual/index.es11.js +1 -1
  12. package/_virtual/index.es12.js +1 -1
  13. package/_virtual/index.es13.js +4 -2
  14. package/_virtual/index.es14.js +2 -2
  15. package/_virtual/index.es5.js +2 -4
  16. package/_virtual/index.es6.js +1 -1
  17. package/_virtual/index.es7.js +1 -1
  18. package/_virtual/index.es8.js +1 -1
  19. package/_virtual/index.es9.js +1 -1
  20. package/bundle-stats.html +1 -1
  21. package/external/@mui/system/colorManipulator.cjs.js +1 -1
  22. package/external/@mui/system/colorManipulator.es.js +2 -2
  23. package/external/@mui/system/createStyled.cjs.js +1 -1
  24. package/external/@mui/system/createStyled.es.js +6 -6
  25. package/external/@mui/system/useThemeWithoutDefault.cjs.js +1 -1
  26. package/external/@mui/system/useThemeWithoutDefault.es.js +1 -1
  27. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.cjs.js +1 -1
  28. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.development.es.js +1 -1
  29. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  30. package/external/hoist-non-react-statics/external/react-is/cjs/react-is.production.min.es.js +1 -1
  31. package/external/hoist-non-react-statics/external/react-is/index.cjs.js +1 -1
  32. package/external/hoist-non-react-statics/external/react-is/index.es.js +1 -1
  33. package/external/prop-types/external/react-is/cjs/react-is.development.cjs.js +1 -1
  34. package/external/prop-types/external/react-is/cjs/react-is.development.es.js +1 -1
  35. package/external/prop-types/external/react-is/cjs/react-is.production.min.cjs.js +1 -1
  36. package/external/prop-types/external/react-is/cjs/react-is.production.min.es.js +1 -1
  37. package/external/prop-types/external/react-is/index.cjs.js +1 -1
  38. package/external/prop-types/external/react-is/index.es.js +1 -1
  39. package/external/react-is/index.cjs.js +1 -1
  40. package/external/react-is/index.es.js +1 -1
  41. package/external/toposort/index.cjs.js +1 -1
  42. package/external/toposort/index.es.js +1 -1
  43. package/index.css +1 -1
  44. package/package.json +1 -1
  45. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.cjs.js +1 -0
  46. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.d.ts +52 -0
  47. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.es.js +68 -0
  48. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.module.scss.cjs.js +1 -0
  49. package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.module.scss.es.js +9 -0
  50. package/src/tedi/components/layout/mobile-nav/index.d.ts +2 -0
  51. package/src/tedi/components/layout/mobile-nav/mobile-nav.cjs.js +1 -0
  52. package/src/tedi/components/layout/mobile-nav/mobile-nav.d.ts +20 -0
  53. package/src/tedi/components/layout/{sidenav/components/sidenav-mobile/sidenav-mobile.es.js → mobile-nav/mobile-nav.es.js} +21 -20
  54. package/src/tedi/components/layout/sidenav/index.d.ts +2 -2
  55. package/src/tedi/components/layout/sidenav/sidenav.cjs.js +1 -1
  56. package/src/tedi/components/layout/sidenav/sidenav.d.ts +2 -11
  57. package/src/tedi/components/layout/sidenav/sidenav.es.js +27 -27
  58. package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.cjs.js +1 -0
  59. package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.d.ts +34 -0
  60. package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.es.js +33 -0
  61. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.cjs.js +1 -0
  62. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.d.ts +66 -0
  63. package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.es.js +101 -0
  64. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.cjs.js +1 -0
  65. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.d.ts +11 -0
  66. package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.es.js +9 -0
  67. package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.cjs.js +1 -0
  68. package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.d.ts +28 -0
  69. package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.es.js +30 -0
  70. package/src/tedi/components/layout/top-nav/index.d.ts +5 -0
  71. package/src/tedi/components/layout/top-nav/top-nav-context.cjs.js +1 -0
  72. package/src/tedi/components/layout/top-nav/top-nav-context.d.ts +11 -0
  73. package/src/tedi/components/layout/top-nav/top-nav-context.es.js +6 -0
  74. package/src/tedi/components/layout/top-nav/top-nav.cjs.js +1 -0
  75. package/src/tedi/components/layout/top-nav/top-nav.d.ts +91 -0
  76. package/src/tedi/components/layout/top-nav/top-nav.es.js +171 -0
  77. package/src/tedi/components/layout/top-nav/top-nav.module.scss.cjs.js +1 -0
  78. package/src/tedi/components/layout/top-nav/top-nav.module.scss.es.js +28 -0
  79. package/src/tedi/components/overlays/overlay/overlay-content.cjs.js +1 -1
  80. package/src/tedi/components/overlays/overlay/overlay-content.es.js +35 -32
  81. package/src/tedi/helpers/hooks/use-breakpoint.cjs.js +1 -1
  82. package/src/tedi/helpers/hooks/use-breakpoint.d.ts +7 -0
  83. package/src/tedi/helpers/hooks/use-breakpoint.es.js +22 -14
  84. package/src/tedi/index.d.ts +2 -0
  85. package/tedi.cjs.js +1 -1
  86. package/tedi.es.js +213 -200
  87. package/src/tedi/components/layout/sidenav/components/sidenav-mobile/sidenav-mobile.cjs.js +0 -1
  88. package/src/tedi/components/layout/sidenav/components/sidenav-mobile/sidenav-mobile.d.ts +0 -14
  89. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.cjs.js +0 -1
  90. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.d.ts +0 -31
  91. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.es.js +0 -48
  92. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.cjs.js +0 -1
  93. package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.es.js +0 -8
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tedi-design-system/react",
3
- "version": "18.0.0-rc.6",
3
+ "version": "18.0.0-rc.8",
4
4
  "type": "module",
5
5
  "sideEffects": false,
6
6
  "exports": {
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),v=require("../../../../../../../external/classnames/index.cjs.js"),N=require("../../../../base/icon/icon.cjs.js"),h=require("../../../../buttons/button/button.cjs.js"),q=require("../../../../buttons/floating-button/floating-button.cjs.js"),l=require("./mobile-nav-toggle.module.scss.cjs.js"),x=require("../../../../../providers/label-provider/use-labels.cjs.js"),n=({menuOpen:e,toggleMenu:i,referenceRef:c,getReferenceProps:d=()=>({}),variant:o="mobile",showLabel:m=!1,label:t,className:_})=>{const{getLabel:y}=x.useLabels(),u=t!==void 0?typeof t=="function"?t(e):t:y("header.toggle",e),g=o==="collapse"?e?"right_panel_open":"left_panel_open":e?"close":"menu",r=m&&o==="mobile",b=v.default(l.default["tedi-mobile-nav-toggle"],{[l.default["tedi-mobile-nav-toggle--open"]]:e,[l.default[`tedi-mobile-nav-toggle--${o}`]]:!0,[l.default["tedi-mobile-nav-toggle--with-label"]]:r},_),f=a=>{(a.key==="Enter"||a.key===" ")&&(a.preventDefault(),i(!e))};if(r)return s.jsxs("button",{...d(),ref:c,type:"button","aria-expanded":e,className:b,onClick:()=>i(!e),onKeyDown:f,children:[s.jsx(N.Icon,{name:g,size:24,className:l.default["tedi-mobile-nav-toggle__icon"],color:"inherit"}),s.jsx("span",{className:l.default["tedi-mobile-nav-toggle__label"],children:u})]});const p=o==="collapse"?q.FloatingButton:h.Button;return s.jsx(p,{...d(),ref:c,icon:{name:g,className:l.default["tedi-mobile-nav-toggle__icon"],size:o==="collapse"?18:24},visualType:o==="collapse"?"secondary":"primary",className:b,onClick:()=>i(!e),onKeyDown:f,position:o==="collapse"?"absolute":"static",size:o==="collapse"?"small":"",children:u})},T=n;exports.MobileNavToggle=n;exports.SidenavToggle=T;exports.default=n;
@@ -0,0 +1,52 @@
1
+ import { default as React } from 'react';
2
+ import { UnknownType } from '../../../../../types/commonTypes';
3
+ export type MobileNavToggleVariant = 'mobile' | 'collapse';
4
+ export type MobileNavToggleProps = {
5
+ /**
6
+ * Is the menu open (for mobile) or expanded (for collapse)
7
+ */
8
+ menuOpen: boolean;
9
+ /**
10
+ * Toggle open/collapse state
11
+ */
12
+ toggleMenu: (open: boolean) => void;
13
+ /**
14
+ * Optional ref to attach to button (for floating UI etc.)
15
+ */
16
+ referenceRef?: React.Ref<UnknownType>;
17
+ /**
18
+ * Optional props passed from floating UI
19
+ */
20
+ getReferenceProps?: () => UnknownType;
21
+ /**
22
+ * Variant of toggle (mobile overlay or collapse control)
23
+ */
24
+ variant?: MobileNavToggleVariant;
25
+ /**
26
+ * Show the open/close label visibly below the icon (mobile variant only).
27
+ * The label text comes from the `header.toggle` i18n key by default — pass
28
+ * `label` to override it. When `false` (default), the button renders
29
+ * icon-only and the label is still exposed as accessible text.
30
+ * @default false
31
+ */
32
+ showLabel?: boolean;
33
+ /**
34
+ * Override the toggle's label text. Accepts a static `ReactNode` (used for
35
+ * both states) or a function that returns a `ReactNode` for the current
36
+ * `menuOpen` state (e.g. `(open) => open ? 'Sulge' : 'Menüü'`). When
37
+ * omitted, the label falls back to the `header.toggle` i18n value.
38
+ */
39
+ label?: React.ReactNode | ((menuOpen: boolean) => React.ReactNode);
40
+ /**
41
+ * Add custom class to override styles
42
+ */
43
+ className?: string;
44
+ };
45
+ export declare const MobileNavToggle: ({ menuOpen, toggleMenu, referenceRef, getReferenceProps, variant, showLabel, label, className, }: MobileNavToggleProps) => import("react/jsx-runtime").JSX.Element;
46
+ /** @deprecated Use `MobileNavToggle` — same component, vendor-neutral name. */
47
+ export declare const SidenavToggle: ({ menuOpen, toggleMenu, referenceRef, getReferenceProps, variant, showLabel, label, className, }: MobileNavToggleProps) => import("react/jsx-runtime").JSX.Element;
48
+ /** @deprecated Use `MobileNavToggleProps`. */
49
+ export type SidenavToggleProps = MobileNavToggleProps;
50
+ /** @deprecated Use `MobileNavToggleVariant`. */
51
+ export type SidenavToggleVariant = MobileNavToggleVariant;
52
+ export default MobileNavToggle;
@@ -0,0 +1,68 @@
1
+ import { jsxs as _, jsx as a } from "react/jsx-runtime";
2
+ import h from "../../../../../../../external/classnames/index.es.js";
3
+ import { Icon as N } from "../../../../base/icon/icon.es.js";
4
+ import { Button as u } from "../../../../buttons/button/button.es.js";
5
+ import { FloatingButton as v } from "../../../../buttons/floating-button/floating-button.es.js";
6
+ import l from "./mobile-nav-toggle.module.scss.es.js";
7
+ import { useLabels as L } from "../../../../../providers/label-provider/use-labels.es.js";
8
+ const k = ({
9
+ menuOpen: o,
10
+ toggleMenu: s,
11
+ referenceRef: c,
12
+ getReferenceProps: n = () => ({}),
13
+ variant: e = "mobile",
14
+ showLabel: b = !1,
15
+ label: t,
16
+ className: f
17
+ }) => {
18
+ const { getLabel: y } = L(), m = t !== void 0 ? typeof t == "function" ? t(o) : t : y("header.toggle", o), r = e === "collapse" ? o ? "right_panel_open" : "left_panel_open" : o ? "close" : "menu", g = b && e === "mobile", d = h(
19
+ l["tedi-mobile-nav-toggle"],
20
+ {
21
+ [l["tedi-mobile-nav-toggle--open"]]: o,
22
+ [l[`tedi-mobile-nav-toggle--${e}`]]: !0,
23
+ [l["tedi-mobile-nav-toggle--with-label"]]: g
24
+ },
25
+ f
26
+ ), p = (i) => {
27
+ (i.key === "Enter" || i.key === " ") && (i.preventDefault(), s(!o));
28
+ };
29
+ return g ? /* @__PURE__ */ _(
30
+ "button",
31
+ {
32
+ ...n(),
33
+ ref: c,
34
+ type: "button",
35
+ "aria-expanded": o,
36
+ className: d,
37
+ onClick: () => s(!o),
38
+ onKeyDown: p,
39
+ children: [
40
+ /* @__PURE__ */ a(N, { name: r, size: 24, className: l["tedi-mobile-nav-toggle__icon"], color: "inherit" }),
41
+ /* @__PURE__ */ a("span", { className: l["tedi-mobile-nav-toggle__label"], children: m })
42
+ ]
43
+ }
44
+ ) : /* @__PURE__ */ a(
45
+ e === "collapse" ? v : u,
46
+ {
47
+ ...n(),
48
+ ref: c,
49
+ icon: {
50
+ name: r,
51
+ className: l["tedi-mobile-nav-toggle__icon"],
52
+ size: e === "collapse" ? 18 : 24
53
+ },
54
+ visualType: e === "collapse" ? "secondary" : "primary",
55
+ className: d,
56
+ onClick: () => s(!o),
57
+ onKeyDown: p,
58
+ position: e === "collapse" ? "absolute" : "static",
59
+ size: e === "collapse" ? "small" : "",
60
+ children: m
61
+ }
62
+ );
63
+ }, j = k;
64
+ export {
65
+ k as MobileNavToggle,
66
+ j as SidenavToggle,
67
+ k as default
68
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e={"tedi-mobile-nav-toggle":"tedi-mobile-nav-toggle-923946d1","tedi-mobile-nav-toggle--collapse":"tedi-mobile-nav-toggle--collapse-4434a2d6","tedi-mobile-nav-toggle--with-label":"tedi-mobile-nav-toggle--with-label-703a307f","tedi-mobile-nav-toggle__label":"tedi-mobile-nav-toggle__label-9cd8a16e"};exports.default=e;
@@ -0,0 +1,9 @@
1
+ const e = {
2
+ "tedi-mobile-nav-toggle": "tedi-mobile-nav-toggle-923946d1",
3
+ "tedi-mobile-nav-toggle--collapse": "tedi-mobile-nav-toggle--collapse-4434a2d6",
4
+ "tedi-mobile-nav-toggle--with-label": "tedi-mobile-nav-toggle--with-label-703a307f",
5
+ "tedi-mobile-nav-toggle__label": "tedi-mobile-nav-toggle__label-9cd8a16e"
6
+ };
7
+ export {
8
+ e as default
9
+ };
@@ -0,0 +1,2 @@
1
+ export * from './mobile-nav';
2
+ export * from './components/mobile-nav-toggle/mobile-nav-toggle';
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react/jsx-runtime"),U=require("../../../../../external/@floating-ui/react/dist/floating-ui.react.cjs.js"),l=require("../../../../../external/classnames/index.cjs.js"),m=require("react"),d=require("../../base/icon/icon.cjs.js"),f=require("../../buttons/button/button.cjs.js"),M=require("../sidenav/components/sidenav-item/sidenav-item.cjs.js"),n=require("../sidenav/sidenav.module.scss.cjs.js"),D=require("../../../providers/label-provider/use-labels.cjs.js"),q=({navItems:h,ariaLabel:y,linkAs:v,isOpen:w,onClose:r,showOverlay:B=!0,id:G,className:P})=>{var k,g,p,I,S,C,L;const{getLabel:b}=D.useLabels(),[s,c]=m.useState([{items:h}]);m.useEffect(()=>{c([{items:h}])},[h]);const a=s[s.length-1],R=s.length===1,x=e=>{var _;const i=!!(e.subItems||e.subItemGroups),o=!!(e.href||e.to);if(!i){r();return}const u=((_=e.subItemGroups)==null?void 0:_.flatMap(H=>H.subItems))||e.subItems||[];c([...s,{items:u,parent:e,renderParentLink:o}])},T=()=>{c(s.slice(0,-1))},z=()=>{c([s[0]])},F=((g=(k=a.parent)==null?void 0:k.subItems)==null?void 0:g.length)??((I=(p=a.parent)==null?void 0:p.subItemGroups)==null?void 0:I.length),O=s.length>1&&!(a.renderParentLink&&F),N=(e,i)=>i===1?!(e.subItems||e.subItemGroups)?t.jsx(M.SideNavItem,{...e,as:v,level:i,onItemClick:r,className:l.default(n.default["tedi-sidenav__item--mobile"],e.className)}):t.jsx("li",{className:l.default(n.default["tedi-sidenav__item"],n.default["tedi-sidenav__item--mobile"]),children:t.jsxs("button",{onClick:()=>x(e),className:n.default["tedi-sidenav__link"],children:[e.icon&&t.jsx(d.Icon,{name:typeof e.icon=="string"?e.icon:e.icon.name,color:"white",className:n.default["tedi-sidenav__icon"]}),t.jsx("span",{className:n.default["tedi-sidenav__title"],children:e.children}),t.jsx(d.Icon,{name:"expand_more",color:"white",className:n.default["tedi-sidenav__toggle-icon"]})]})}):E(e,i),E=(e,i)=>{const o=!!(e.href||e.to),u=!!(e.subItems||e.subItemGroups);return o?t.jsx(M.SideNavItem,{...e,as:v,level:i,icon:void 0,onItemClick:r,className:l.default(n.default["tedi-sidenav__sub-item"],e.className)}):t.jsx("li",{className:l.default(n.default["tedi-sidenav__item"]),children:t.jsxs(f.Button,{noStyle:!0,onClick:()=>u?x(e):r(),className:n.default["tedi-sidenav__link"],children:[t.jsx("span",{className:n.default["tedi-sidenav__title"],children:e.children}),u?t.jsx(d.Icon,{name:"expand_more",color:"white",className:n.default["tedi-sidenav__toggle-icon"]}):null]})})},j=t.jsxs("nav",{"data-name":"mobile-sidenav",className:l.default(n.default["tedi-sidenav"],n.default["tedi-sidenav--mobile"],P),"aria-label":y,id:G,children:[t.jsx("div",{className:n.default["tedi-sidenav__list"],children:!R&&t.jsxs("div",{className:n.default["tedi-sidenav__back-buttons"],children:[s.length>1&&t.jsxs(f.Button,{noStyle:!0,onClick:z,className:l.default(n.default["tedi-sidenav__link"],n.default["tedi-sidenav__back-button"]),children:[t.jsx(d.Icon,{name:"arrow_back",size:16,color:"white"}),t.jsx("span",{children:b("sidenav.backToMainMenu")})]}),s.length>2&&t.jsxs(f.Button,{noStyle:!0,onClick:T,className:l.default(n.default["tedi-sidenav__link"],n.default["tedi-sidenav__back-button"]),children:[t.jsx(d.Icon,{name:"arrow_back",size:16,color:"white"}),t.jsx("span",{children:((C=(S=s[s.length-1])==null?void 0:S.parent)==null?void 0:C.children)+" "+b("sidenav.backtoMenu")})]})]})}),O&&t.jsx("div",{className:l.default(n.default["tedi-sidenav__subheading"],n.default["tedi-sidenav__subheading--mobile"]),children:(L=a.parent)==null?void 0:L.children}),t.jsxs("ul",{className:n.default["tedi-sidenav__list"],role:"menubar",children:[a.renderParentLink&&a.parent&&t.jsx("li",{className:n.default["tedi-sidenav__list-item"],children:t.jsx("div",{className:l.default(n.default["tedi-sidenav__collapse"]),children:N(a.parent,s.length)})}),!a.renderParentLink&&a.items.map((e,i)=>t.jsx(m.Fragment,{children:N(e,s.length)},e.id||i))]})]});return w?B?t.jsx(U.FloatingOverlay,{style:{top:"0",position:"relative",height:"100%"},className:n.default["tedi-sidenav__overlay"],children:j}):j:null},J=q;exports.MobileNav=q;exports.SideNavMobile=J;
@@ -0,0 +1,20 @@
1
+ import { default as React } from 'react';
2
+ import { SideNavItemProps } from '../sidenav/components/sidenav-item/sidenav-item';
3
+ export type MobileNavProps<C extends React.ElementType = 'a'> = {
4
+ navItems: SideNavItemProps<C>[];
5
+ ariaLabel: string;
6
+ linkAs?: C;
7
+ isOpen: boolean;
8
+ onClose: () => void;
9
+ showOverlay?: boolean;
10
+ id?: string;
11
+ className?: string;
12
+ };
13
+ export declare const MobileNav: <C extends React.ElementType = "a">({ navItems, ariaLabel, linkAs, isOpen, onClose, showOverlay, id, className, }: MobileNavProps<C>) => import("react/jsx-runtime").JSX.Element | null;
14
+ /**
15
+ * @deprecated Use `MobileNav` (same component, vendor-neutral name). Kept for
16
+ * backward compatibility with the `SideNav.Mobile` sub-component alias.
17
+ */
18
+ export declare const SideNavMobile: <C extends React.ElementType = "a">({ navItems, ariaLabel, linkAs, isOpen, onClose, showOverlay, id, className, }: MobileNavProps<C>) => import("react/jsx-runtime").JSX.Element | null;
19
+ /** @deprecated Use `MobileNavProps`. */
20
+ export type SideNavMobileProps<C extends React.ElementType = 'a'> = MobileNavProps<C>;
@@ -1,13 +1,13 @@
1
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";
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
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 n from "../../sidenav.module.scss.es.js";
8
- import { SideNavItem as M } from "../sidenav-item/sidenav-item.es.js";
9
- import { useLabels as Q } from "../../../../../providers/label-provider/use-labels.es.js";
10
- const ne = ({
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";
8
+ 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
11
  navItems: _,
12
12
  ariaLabel: x,
13
13
  linkAs: b,
@@ -17,12 +17,12 @@ const ne = ({
17
17
  id: R,
18
18
  className: B
19
19
  }) => {
20
- var f, I, C, L, S, y, w;
20
+ var f, I, C, L, S, y, M;
21
21
  const { getLabel: p } = Q(), [s, c] = J([{ items: _ }]);
22
22
  K(() => {
23
23
  c([{ items: _ }]);
24
24
  }, [_]);
25
- const t = s[s.length - 1], j = s.length === 1, k = (e) => {
25
+ const t = s[s.length - 1], j = s.length === 1, N = (e) => {
26
26
  var u;
27
27
  const a = !!(e.subItems || e.subItemGroups), m = !!(e.href || e.to);
28
28
  if (!a) {
@@ -42,8 +42,8 @@ const ne = ({
42
42
  c(s.slice(0, -1));
43
43
  }, F = () => {
44
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), N = (e, a) => a === 1 ? !(e.subItems || e.subItemGroups) ? /* @__PURE__ */ i(
46
- M,
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,
47
47
  {
48
48
  ...e,
49
49
  as: b,
@@ -51,7 +51,7 @@ const ne = ({
51
51
  onItemClick: o,
52
52
  className: l(n["tedi-sidenav__item--mobile"], e.className)
53
53
  }
54
- ) : /* @__PURE__ */ i("li", { className: l(n["tedi-sidenav__item"], n["tedi-sidenav__item--mobile"]), children: /* @__PURE__ */ r("button", { onClick: () => k(e), className: n["tedi-sidenav__link"], children: [
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
55
  e.icon && /* @__PURE__ */ i(
56
56
  d,
57
57
  {
@@ -65,7 +65,7 @@ const ne = ({
65
65
  ] }) }) : H(e, a), H = (e, a) => {
66
66
  const m = !!(e.href || e.to), h = !!(e.subItems || e.subItemGroups);
67
67
  return m ? /* @__PURE__ */ i(
68
- M,
68
+ w,
69
69
  {
70
70
  ...e,
71
71
  as: b,
@@ -78,7 +78,7 @@ const ne = ({
78
78
  v,
79
79
  {
80
80
  noStyle: !0,
81
- onClick: () => h ? k(e) : o(),
81
+ onClick: () => h ? N(e) : o(),
82
82
  className: n["tedi-sidenav__link"],
83
83
  children: [
84
84
  /* @__PURE__ */ i("span", { className: n["tedi-sidenav__title"], children: e.children }),
@@ -120,10 +120,10 @@ const ne = ({
120
120
  }
121
121
  )
122
122
  ] }) }),
123
- E && /* @__PURE__ */ i("div", { className: l(n["tedi-sidenav__subheading"], n["tedi-sidenav__subheading--mobile"]), children: (w = t.parent) == null ? void 0 : w.children }),
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
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: N(t.parent, s.length) }) }),
126
- !t.renderParentLink && t.items.map((e, a) => /* @__PURE__ */ i(D.Fragment, { children: N(e, s.length) }, e.id || a))
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))
127
127
  ] })
128
128
  ]
129
129
  }
@@ -140,7 +140,8 @@ const ne = ({
140
140
  children: g
141
141
  }
142
142
  ) : g : null;
143
- };
143
+ }, ie = U;
144
144
  export {
145
- ne as SideNavMobile
145
+ U as MobileNav,
146
+ ie as SideNavMobile
146
147
  };
@@ -1,5 +1,5 @@
1
1
  export * from './sidenav';
2
2
  export * from './components/sidenav-dropdown/sidenav-dropdown';
3
3
  export * from './components/sidenav-item/sidenav-item';
4
- export * from './components/sidenav-toggle/sidenav-toggle';
5
- export * from './components/sidenav-mobile/sidenav-mobile';
4
+ export * from '../mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle';
5
+ export * from '../mobile-nav/mobile-nav';
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const s=require("react/jsx-runtime"),n=require("react"),L=require("../../../../../external/classnames/index.cjs.js"),V=require("../../misc/print/print.cjs.js"),F=require("./components/sidenav-dropdown/sidenav-dropdown.cjs.js"),N=require("./components/sidenav-item/sidenav-item.cjs.js"),O=require("./components/sidenav-mobile/sidenav-mobile.cjs.js"),q=require("./components/sidenav-toggle/sidenav-toggle.cjs.js"),l=require("./sidenav.module.scss.cjs.js"),C=require("../../../helpers/hooks/use-breakpoint.cjs.js"),G=o=>{const{navItems:u,ariaLabel:r,linkAs:v,showDividers:h=!0,className:p,mobileBreakpoint:j="tablet",showMobileOverlay:k=!0,isMobileOpen:m,isCollapsed:w=!1,onMenuToggle:d,onCollapseToggle:c,sideNavItemSize:x="default",...b}=o,B=e=>({mobile:"md",tablet:"lg"})[e],_=C.useBreakpoint(),i=C.isBreakpointBelow(_,B(j)),t=m!==void 0,[y,f]=n.useState(!i),S=t?m:y,[D,T]=n.useState(w),a=i?!1:D,E="isCollapsed"in o;n.useEffect(()=>{t||f(!i)},[i,t]);const P=e=>{T(e),c==null||c(e)},R=()=>{P(!a)},g=e=>{t||f(e),d==null||d(e)},z=()=>{g(!S)},A=L.default(l.default["tedi-sidenav"],p,{[l.default["tedi-sidenav--has-dividers"]]:h,[l.default["tedi-sidenav--collapsed"]]:a});return i?s.jsx(O.SideNavMobile,{navItems:u,ariaLabel:r,linkAs:v,isOpen:S,onClose:()=>g(!1),showOverlay:k,className:p,...b}):s.jsx(V.Print,{visibility:"hide",children:s.jsxs("nav",{id:o.id,"data-name":"sidenav",...b,className:A,"aria-label":r,children:[E&&s.jsx(q.SidenavToggle,{menuOpen:!a,toggleMenu:R,variant:"collapse"}),s.jsx("ul",{className:l.default["tedi-sidenav__list"],role:"menubar","aria-label":r,children:u.map((e,M)=>n.createElement(N.SideNavItem,{as:v,...e,key:M,onItemClick:z,isCollapsed:a,sideNavItemSize:x}))})]})})},I=Object.assign(G,{Toggle:q.SidenavToggle,Item:N.SideNavItem,Dropdown:F.SideNavDropdown,Mobile:O.SideNavMobile});exports.SideNav=I;exports.default=I;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const i=require("react/jsx-runtime"),n=require("react"),L=require("../../../../../external/classnames/index.cjs.js"),V=require("../../misc/print/print.cjs.js"),O=require("../mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.cjs.js"),S=require("../mobile-nav/mobile-nav.cjs.js"),F=require("./components/sidenav-dropdown/sidenav-dropdown.cjs.js"),q=require("./components/sidenav-item/sidenav-item.cjs.js"),l=require("./sidenav.module.scss.cjs.js"),C=require("../../../helpers/hooks/use-breakpoint.cjs.js"),G=o=>{const{navItems:u,ariaLabel:r,linkAs:v,showDividers:h=!0,className:p,mobileBreakpoint:j="tablet",showMobileOverlay:k=!0,isMobileOpen:m,isCollapsed:w=!1,onMenuToggle:d,onCollapseToggle:c,sideNavItemSize:x="default",...b}=o,B=e=>({mobile:"md",tablet:"lg"})[e],_=C.useBreakpoint(),s=C.isBreakpointBelow(_,B(j)),t=m!==void 0,[y,f]=n.useState(!s),N=t?m:y,[D,T]=n.useState(w),a=s?!1:D,E="isCollapsed"in o;n.useEffect(()=>{t||f(!s)},[s,t]);const P=e=>{T(e),c==null||c(e)},R=()=>{P(!a)},g=e=>{t||f(e),d==null||d(e)},z=()=>{g(!N)},A=L.default(l.default["tedi-sidenav"],p,{[l.default["tedi-sidenav--has-dividers"]]:h,[l.default["tedi-sidenav--collapsed"]]:a});return s?i.jsx(S.MobileNav,{navItems:u,ariaLabel:r,linkAs:v,isOpen:N,onClose:()=>g(!1),showOverlay:k,className:p,...b}):i.jsx(V.Print,{visibility:"hide",children:i.jsxs("nav",{id:o.id,"data-name":"sidenav",...b,className:A,"aria-label":r,children:[E&&i.jsx(O.MobileNavToggle,{menuOpen:!a,toggleMenu:R,variant:"collapse"}),i.jsx("ul",{className:l.default["tedi-sidenav__list"],role:"menubar","aria-label":r,children:u.map((e,M)=>n.createElement(q.SideNavItem,{as:v,...e,key:M,onItemClick:z,isCollapsed:a,sideNavItemSize:x}))})]})})},I=Object.assign(G,{Toggle:O.MobileNavToggle,Item:q.SideNavItem,Dropdown:F.SideNavDropdown,Mobile:S.MobileNav});exports.SideNav=I;exports.default=I;
@@ -80,7 +80,7 @@ export type SideNavProps<C extends React.ElementType = 'a'> = ConditionalTypes<C
80
80
  sideNavItemSize?: SideNavItemSize;
81
81
  };
82
82
  export declare const SideNav: (<C extends React.ElementType = "a">(props: SideNavProps<C>) => React.ReactElement | null) & {
83
- Toggle: ({ menuOpen, toggleMenu, referenceRef, getReferenceProps, variant, className, }: import('./components/sidenav-toggle/sidenav-toggle').SidenavToggleProps) => import("react/jsx-runtime").JSX.Element;
83
+ Toggle: ({ menuOpen, toggleMenu, referenceRef, getReferenceProps, variant, showLabel, label, className, }: import('../mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle').MobileNavToggleProps) => import("react/jsx-runtime").JSX.Element;
84
84
  Item: <C extends React.ElementType = "a">(props: SideNavItemProps<C> & {
85
85
  onItemClick?: () => void;
86
86
  level?: number;
@@ -95,15 +95,6 @@ export declare const SideNav: (<C extends React.ElementType = "a">(props: SideNa
95
95
  onOpenChange?: (isOpen: boolean) => void;
96
96
  as?: C | undefined;
97
97
  }) => import("react/jsx-runtime").JSX.Element;
98
- Mobile: <C extends React.ElementType = "a">({ navItems, ariaLabel, linkAs, isOpen, onClose, showOverlay, id, className, }: {
99
- navItems: SideNavItemProps<C>[];
100
- ariaLabel: string;
101
- linkAs?: C | undefined;
102
- isOpen: boolean;
103
- onClose: () => void;
104
- showOverlay?: boolean;
105
- id?: string;
106
- className?: string;
107
- }) => import("react/jsx-runtime").JSX.Element | null;
98
+ Mobile: <C extends React.ElementType = "a">({ navItems, ariaLabel, linkAs, isOpen, onClose, showOverlay, id, className, }: import('../mobile-nav/mobile-nav').MobileNavProps<C>) => import("react/jsx-runtime").JSX.Element | null;
108
99
  };
109
100
  export default SideNav;
@@ -1,76 +1,76 @@
1
1
  import { jsx as o, jsxs as T } from "react/jsx-runtime";
2
- import { useState as O, useEffect as V, createElement as q } from "react";
2
+ import { useState as M, useEffect as V, createElement as q } from "react";
3
3
  import F from "../../../../../external/classnames/index.es.js";
4
4
  import { Print as G } from "../../misc/print/print.es.js";
5
+ import { MobileNavToggle as O } from "../mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.es.js";
6
+ import { MobileNav as g } from "../mobile-nav/mobile-nav.es.js";
5
7
  import { SideNavDropdown as H } from "./components/sidenav-dropdown/sidenav-dropdown.es.js";
6
- import { SideNavItem as M } from "./components/sidenav-item/sidenav-item.es.js";
7
- import { SideNavMobile as g } from "./components/sidenav-mobile/sidenav-mobile.es.js";
8
- import { SidenavToggle as h } from "./components/sidenav-toggle/sidenav-toggle.es.js";
8
+ import { SideNavItem as h } from "./components/sidenav-item/sidenav-item.es.js";
9
9
  import a from "./sidenav.module.scss.es.js";
10
10
  import { useBreakpoint as J, isBreakpointBelow as K } from "../../../helpers/hooks/use-breakpoint.es.js";
11
- const Q = (n) => {
11
+ const Q = (l) => {
12
12
  const {
13
13
  navItems: d,
14
- ariaLabel: l,
14
+ ariaLabel: n,
15
15
  linkAs: p,
16
- showDividers: S = !0,
16
+ showDividers: k = !0,
17
17
  className: c,
18
- mobileBreakpoint: k = "tablet",
19
- showMobileOverlay: w = !0,
18
+ mobileBreakpoint: w = "tablet",
19
+ showMobileOverlay: I = !0,
20
20
  isMobileOpen: v,
21
- isCollapsed: I = !1,
21
+ isCollapsed: B = !1,
22
22
  onMenuToggle: r,
23
23
  onCollapseToggle: m,
24
- sideNavItemSize: B = "default",
24
+ sideNavItemSize: S = "default",
25
25
  ...f
26
- } = n, y = (e) => ({
26
+ } = l, y = (e) => ({
27
27
  mobile: "md",
28
28
  tablet: "lg"
29
- })[e], j = J(), i = K(j, y(k)), s = v !== void 0, [x, b] = O(!i), u = s ? v : x, [D, E] = O(I), t = i ? !1 : D, P = "isCollapsed" in n;
29
+ })[e], j = J(), s = K(j, y(w)), i = v !== void 0, [x, b] = M(!s), u = i ? v : x, [D, E] = M(B), t = s ? !1 : D, P = "isCollapsed" in l;
30
30
  V(() => {
31
- s || b(!i);
32
- }, [i, s]);
31
+ i || b(!s);
32
+ }, [s, i]);
33
33
  const _ = (e) => {
34
34
  E(e), m == null || m(e);
35
35
  }, z = () => {
36
36
  _(!t);
37
37
  }, C = (e) => {
38
- s || b(e), r == null || r(e);
38
+ i || b(e), r == null || r(e);
39
39
  }, A = () => {
40
40
  C(!u);
41
41
  }, L = F(a["tedi-sidenav"], c, {
42
- [a["tedi-sidenav--has-dividers"]]: S,
42
+ [a["tedi-sidenav--has-dividers"]]: k,
43
43
  [a["tedi-sidenav--collapsed"]]: t
44
44
  });
45
- return i ? /* @__PURE__ */ o(
45
+ return s ? /* @__PURE__ */ o(
46
46
  g,
47
47
  {
48
48
  navItems: d,
49
- ariaLabel: l,
49
+ ariaLabel: n,
50
50
  linkAs: p,
51
51
  isOpen: u,
52
52
  onClose: () => C(!1),
53
- showOverlay: w,
53
+ showOverlay: I,
54
54
  className: c,
55
55
  ...f
56
56
  }
57
- ) : /* @__PURE__ */ o(G, { visibility: "hide", children: /* @__PURE__ */ T("nav", { id: n.id, "data-name": "sidenav", ...f, className: L, "aria-label": l, children: [
58
- P && /* @__PURE__ */ o(h, { menuOpen: !t, toggleMenu: z, variant: "collapse" }),
59
- /* @__PURE__ */ o("ul", { className: a["tedi-sidenav__list"], role: "menubar", "aria-label": l, children: d.map((e, N) => /* @__PURE__ */ q(
60
- M,
57
+ ) : /* @__PURE__ */ o(G, { visibility: "hide", children: /* @__PURE__ */ T("nav", { id: l.id, "data-name": "sidenav", ...f, className: L, "aria-label": n, children: [
58
+ P && /* @__PURE__ */ o(O, { menuOpen: !t, toggleMenu: z, variant: "collapse" }),
59
+ /* @__PURE__ */ o("ul", { className: a["tedi-sidenav__list"], role: "menubar", "aria-label": n, children: d.map((e, N) => /* @__PURE__ */ q(
60
+ h,
61
61
  {
62
62
  as: p,
63
63
  ...e,
64
64
  key: N,
65
65
  onItemClick: A,
66
66
  isCollapsed: t,
67
- sideNavItemSize: B
67
+ sideNavItemSize: S
68
68
  }
69
69
  )) })
70
70
  ] }) });
71
71
  }, te = Object.assign(Q, {
72
- Toggle: h,
73
- Item: M,
72
+ Toggle: O,
73
+ Item: h,
74
74
  Dropdown: H,
75
75
  Mobile: g
76
76
  });
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),n=require("../../../../../../../external/classnames/index.cjs.js"),d=require("../../../../base/icon/icon.cjs.js"),s=require("../../top-nav.module.scss.cjs.js"),o=({title:a,children:r,icon:e,headingLevel:u="h3",className:i})=>{const l=u;return t.jsxs("section",{className:n.default(s.default["tedi-top-nav__group"],i),children:[a&&t.jsxs(l,{className:s.default["tedi-top-nav__group-title"],children:[e&&t.jsx(d.Icon,{className:s.default["tedi-top-nav__group-icon"],...typeof e=="string"?{name:e}:e,size:typeof e=="string"?16:e.size??16,color:"inherit"}),a]}),t.jsx("ul",{className:s.default["tedi-top-nav__group-list"],children:r})]})};o.displayName="TopNav.Group";exports.TopNavGroup=o;exports.default=o;
@@ -0,0 +1,34 @@
1
+ import { default as React } from 'react';
2
+ import { IconWithoutBackgroundProps } from '../../../../base/icon/icon';
3
+ export interface TopNavGroupProps {
4
+ /**
5
+ * Uppercase section title rendered above the link list. When omitted, the
6
+ * heading is not rendered — useful for a single-column mega-menu that only
7
+ * lists links.
8
+ */
9
+ title?: React.ReactNode;
10
+ /**
11
+ * `TopNav.SubItem` children. Anything else is ignored.
12
+ */
13
+ children: React.ReactNode;
14
+ /**
15
+ * Optional leading icon rendered next to the title — material-symbol name or
16
+ * full `IconWithoutBackgroundProps`. Ignored when `title` is omitted.
17
+ */
18
+ icon?: string | IconWithoutBackgroundProps;
19
+ /**
20
+ * HTML heading level used for the title — pick the value that keeps the
21
+ * document outline correct on the host page.
22
+ * @default h3
23
+ */
24
+ headingLevel?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
25
+ /**
26
+ * Additional class name applied to the column.
27
+ */
28
+ className?: string;
29
+ }
30
+ export declare const TopNavGroup: {
31
+ ({ title, children, icon, headingLevel, className, }: TopNavGroupProps): JSX.Element;
32
+ displayName: string;
33
+ };
34
+ export default TopNavGroup;
@@ -0,0 +1,33 @@
1
+ import { jsxs as e, jsx as a } from "react/jsx-runtime";
2
+ import l from "../../../../../../../external/classnames/index.es.js";
3
+ import { Icon as n } from "../../../../base/icon/icon.es.js";
4
+ import o from "../../top-nav.module.scss.es.js";
5
+ const d = ({
6
+ title: t,
7
+ children: r,
8
+ icon: s,
9
+ headingLevel: p = "h3",
10
+ className: i
11
+ }) => {
12
+ const m = p;
13
+ return /* @__PURE__ */ e("section", { className: l(o["tedi-top-nav__group"], i), children: [
14
+ t && /* @__PURE__ */ e(m, { className: o["tedi-top-nav__group-title"], children: [
15
+ s && /* @__PURE__ */ a(
16
+ n,
17
+ {
18
+ className: o["tedi-top-nav__group-icon"],
19
+ ...typeof s == "string" ? { name: s } : s,
20
+ size: typeof s == "string" ? 16 : s.size ?? 16,
21
+ color: "inherit"
22
+ }
23
+ ),
24
+ t
25
+ ] }),
26
+ /* @__PURE__ */ a("ul", { className: o["tedi-top-nav__group-list"], children: r })
27
+ ] });
28
+ };
29
+ d.displayName = "TopNav.Group";
30
+ export {
31
+ d as TopNavGroup,
32
+ d as default
33
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("react/jsx-runtime"),a=require("../../../../../../../external/classnames/index.cjs.js"),C=require("react"),f=require("../../../../base/icon/icon.cjs.js"),e=require("../../top-nav.module.scss.cjs.js"),v=C.forwardRef((b,h)=>{const{children:N,href:d,icon:n,isActive:o=!1,hasSubmenu:u=!1,disabled:s=!1,onClick:l,as:x,className:I,submenu:j,renderSubmenuInline:g=!1,isSubmenuOpen:y,panelId:r,...S}=b,c=!d&&u,T=x??(c?"button":"a"),i=y??o,p=g&&i&&u,k=m=>{if(s){m.preventDefault();return}l==null||l(m)},q=a.default(e.default["tedi-top-nav__link"],{[e.default["tedi-top-nav__link--active"]]:o||i},I),w={...S,ref:h,className:q,onClick:k,...c?{type:"button",disabled:s,"aria-haspopup":!0,"aria-expanded":i,"aria-controls":r}:{href:s?void 0:d,"aria-current":o?"page":void 0,"aria-disabled":s||void 0}};return t.jsxs("li",{className:a.default(e.default["tedi-top-nav__item"],{[e.default["tedi-top-nav__item--has-inline-submenu"]]:p}),children:[t.jsxs(T,{...w,children:[n&&t.jsx(f.Icon,{className:e.default["tedi-top-nav__icon"],...typeof n=="string"?{name:n}:n,size:typeof n=="string"?18:n.size??18,color:"inherit"}),N,u&&t.jsx(f.Icon,{className:a.default(e.default["tedi-top-nav__icon"],e.default["tedi-top-nav__chevron"],{[e.default["tedi-top-nav__chevron--open"]]:i}),name:"keyboard_arrow_down",size:18,color:"inherit"})]}),p&&t.jsx("div",{id:r,className:a.default(e.default["tedi-top-nav__submenu"],e.default["tedi-top-nav__submenu--inline"]),"data-name":"top-nav-submenu",children:t.jsx("div",{className:a.default(e.default["tedi-top-nav__submenu-inner"],e.default["tedi-top-nav__submenu-inner--inline"]),children:j})})]})});v.displayName="TopNav.Item";const _=v;exports.TopNavItem=_;exports.default=_;
@@ -0,0 +1,66 @@
1
+ import { default as React } from 'react';
2
+ import { PolymorphicComponentPropWithRef } from '../../../../../helpers/polymorphic/types';
3
+ import { IconWithoutBackgroundProps } from '../../../../base/icon/icon';
4
+ type TopNavItemLinkProps = {
5
+ /**
6
+ * Submenu content — typically a fragment of `TopNav.Group` elements.
7
+ * When provided and `isActive` is `true`, the parent `TopNav` renders
8
+ * the submenu inside the mega-menu panel below the bar, and a
9
+ * `keyboard_arrow_down` chevron is added next to the label.
10
+ *
11
+ * A mega-menu item is a toggle, not a link, so `href` is **not** allowed
12
+ * alongside `submenu` — the two are mutually exclusive.
13
+ */
14
+ submenu: React.ReactNode;
15
+ href?: never;
16
+ } | {
17
+ /**
18
+ * Destination URL. Omit when the item only opens a submenu.
19
+ */
20
+ href?: string;
21
+ submenu?: never;
22
+ };
23
+ type TopNavItemOwnProps = {
24
+ /**
25
+ * Bar label. Pass a string or any ReactNode that renders inline.
26
+ */
27
+ children: React.ReactNode;
28
+ /**
29
+ * Optional leading icon — material-symbol name or full `IconWithoutBackgroundProps`.
30
+ */
31
+ icon?: string | IconWithoutBackgroundProps;
32
+ /**
33
+ * Marks this item as the current page. Renders `aria-current="page"`,
34
+ * applies the active visual, and (when the item has a submenu) surfaces
35
+ * the mega-menu panel below the bar.
36
+ * @default false
37
+ */
38
+ isActive?: boolean;
39
+ /**
40
+ * Disables interaction. For a link, sets `aria-disabled` and removes the
41
+ * `href`. For a toggle-only parent (`<button>`), sets the native `disabled`
42
+ * attribute.
43
+ * @default false
44
+ */
45
+ disabled?: boolean;
46
+ /**
47
+ * Click handler. Receives the original mouse / keyboard event.
48
+ */
49
+ onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
50
+ /**
51
+ * Additional class name applied to the trigger element.
52
+ */
53
+ className?: string;
54
+ /** @internal Set by the parent to indicate the item carries submenu content. */
55
+ hasSubmenu?: boolean;
56
+ /** @internal When true and the submenu is open, render the submenu inside this `<li>` instead of as a full-width panel. */
57
+ renderSubmenuInline?: boolean;
58
+ /** @internal Parent-controlled submenu visibility. Defaults to `isActive` when undefined (standalone use / link items). */
59
+ isSubmenuOpen?: boolean;
60
+ /** @internal Shared id used to link the toggle button (`aria-controls`) to the submenu panel (`id`). */
61
+ panelId?: string;
62
+ };
63
+ type TopNavItemBaseProps = TopNavItemOwnProps & TopNavItemLinkProps;
64
+ export type TopNavItemProps<C extends React.ElementType = 'a'> = PolymorphicComponentPropWithRef<C, TopNavItemBaseProps>;
65
+ export declare const TopNavItem: <C extends React.ElementType = "a">(props: TopNavItemProps<C>) => React.ReactElement | null;
66
+ export default TopNavItem;