@tedi-design-system/react 18.0.0-rc.7 → 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.
- package/_virtual/index.cjs10.js +1 -1
- package/_virtual/index.cjs11.js +1 -1
- package/_virtual/index.cjs12.js +1 -1
- package/_virtual/index.cjs13.js +1 -1
- package/_virtual/index.cjs5.js +1 -1
- package/_virtual/index.cjs6.js +1 -1
- package/_virtual/index.cjs7.js +1 -1
- package/_virtual/index.cjs8.js +1 -1
- package/_virtual/index.cjs9.js +1 -1
- package/_virtual/index.es10.js +1 -1
- package/_virtual/index.es11.js +1 -1
- package/_virtual/index.es12.js +1 -1
- package/_virtual/index.es13.js +4 -2
- package/_virtual/index.es14.js +2 -2
- package/_virtual/index.es5.js +2 -4
- package/_virtual/index.es6.js +1 -1
- package/_virtual/index.es7.js +1 -1
- package/_virtual/index.es8.js +1 -1
- package/_virtual/index.es9.js +1 -1
- package/bundle-stats.html +1 -1
- package/external/@mui/system/colorManipulator.cjs.js +1 -1
- package/external/@mui/system/colorManipulator.es.js +2 -2
- package/external/@mui/system/createStyled.cjs.js +1 -1
- package/external/@mui/system/createStyled.es.js +6 -6
- package/external/@mui/system/useThemeWithoutDefault.cjs.js +1 -1
- package/external/@mui/system/useThemeWithoutDefault.es.js +1 -1
- package/external/react-is/index.cjs.js +1 -1
- package/external/react-is/index.es.js +1 -1
- package/external/toposort/index.cjs.js +1 -1
- package/external/toposort/index.es.js +1 -1
- package/index.css +1 -1
- package/package.json +1 -1
- package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.cjs.js +1 -0
- package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.d.ts +52 -0
- package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.es.js +68 -0
- package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.module.scss.cjs.js +1 -0
- package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.module.scss.es.js +9 -0
- package/src/tedi/components/layout/mobile-nav/index.d.ts +2 -0
- package/src/tedi/components/layout/mobile-nav/mobile-nav.cjs.js +1 -0
- package/src/tedi/components/layout/mobile-nav/mobile-nav.d.ts +20 -0
- package/src/tedi/components/layout/{sidenav/components/sidenav-mobile/sidenav-mobile.es.js → mobile-nav/mobile-nav.es.js} +21 -20
- package/src/tedi/components/layout/sidenav/index.d.ts +2 -2
- package/src/tedi/components/layout/sidenav/sidenav.cjs.js +1 -1
- package/src/tedi/components/layout/sidenav/sidenav.d.ts +2 -11
- package/src/tedi/components/layout/sidenav/sidenav.es.js +27 -27
- package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.d.ts +34 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-group/top-nav-group.es.js +33 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.d.ts +66 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-item/top-nav-item.es.js +101 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.d.ts +11 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.es.js +9 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.d.ts +28 -0
- package/src/tedi/components/layout/top-nav/components/top-nav-subitem/top-nav-subitem.es.js +30 -0
- package/src/tedi/components/layout/top-nav/index.d.ts +5 -0
- package/src/tedi/components/layout/top-nav/top-nav-context.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/top-nav-context.d.ts +11 -0
- package/src/tedi/components/layout/top-nav/top-nav-context.es.js +6 -0
- package/src/tedi/components/layout/top-nav/top-nav.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/top-nav.d.ts +91 -0
- package/src/tedi/components/layout/top-nav/top-nav.es.js +171 -0
- package/src/tedi/components/layout/top-nav/top-nav.module.scss.cjs.js +1 -0
- package/src/tedi/components/layout/top-nav/top-nav.module.scss.es.js +28 -0
- package/src/tedi/helpers/hooks/use-breakpoint.cjs.js +1 -1
- package/src/tedi/helpers/hooks/use-breakpoint.d.ts +7 -0
- package/src/tedi/helpers/hooks/use-breakpoint.es.js +22 -14
- package/src/tedi/index.d.ts +2 -0
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +213 -200
- package/src/tedi/components/layout/sidenav/components/sidenav-mobile/sidenav-mobile.cjs.js +0 -1
- package/src/tedi/components/layout/sidenav/components/sidenav-mobile/sidenav-mobile.d.ts +0 -14
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.cjs.js +0 -1
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.d.ts +0 -31
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.es.js +0 -48
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.cjs.js +0 -1
- package/src/tedi/components/layout/sidenav/components/sidenav-toggle/sidenav-toggle.module.scss.es.js +0 -8
package/package.json
CHANGED
package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.cjs.js
ADDED
|
@@ -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;
|
package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.d.ts
ADDED
|
@@ -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;
|
package/src/tedi/components/layout/mobile-nav/components/mobile-nav-toggle/mobile-nav-toggle.es.js
ADDED
|
@@ -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 @@
|
|
|
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 "
|
|
3
|
-
import l from "
|
|
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 "
|
|
6
|
-
import { Button as v } from "
|
|
7
|
-
import
|
|
8
|
-
import
|
|
9
|
-
import { useLabels as Q } from "
|
|
10
|
-
const
|
|
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,
|
|
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,
|
|
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),
|
|
46
|
-
|
|
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: () =>
|
|
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
|
-
|
|
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 ?
|
|
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: (
|
|
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:
|
|
126
|
-
!t.renderParentLink && t.items.map((e, a) => /* @__PURE__ */ i(D.Fragment, { 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))
|
|
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
|
-
|
|
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 '
|
|
5
|
-
export * from '
|
|
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
|
|
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('
|
|
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
|
|
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
|
|
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 = (
|
|
11
|
+
const Q = (l) => {
|
|
12
12
|
const {
|
|
13
13
|
navItems: d,
|
|
14
|
-
ariaLabel:
|
|
14
|
+
ariaLabel: n,
|
|
15
15
|
linkAs: p,
|
|
16
|
-
showDividers:
|
|
16
|
+
showDividers: k = !0,
|
|
17
17
|
className: c,
|
|
18
|
-
mobileBreakpoint:
|
|
19
|
-
showMobileOverlay:
|
|
18
|
+
mobileBreakpoint: w = "tablet",
|
|
19
|
+
showMobileOverlay: I = !0,
|
|
20
20
|
isMobileOpen: v,
|
|
21
|
-
isCollapsed:
|
|
21
|
+
isCollapsed: B = !1,
|
|
22
22
|
onMenuToggle: r,
|
|
23
23
|
onCollapseToggle: m,
|
|
24
|
-
sideNavItemSize:
|
|
24
|
+
sideNavItemSize: S = "default",
|
|
25
25
|
...f
|
|
26
|
-
} =
|
|
26
|
+
} = l, y = (e) => ({
|
|
27
27
|
mobile: "md",
|
|
28
28
|
tablet: "lg"
|
|
29
|
-
})[e], j = J(),
|
|
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
|
-
|
|
32
|
-
}, [
|
|
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
|
-
|
|
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"]]:
|
|
42
|
+
[a["tedi-sidenav--has-dividers"]]: k,
|
|
43
43
|
[a["tedi-sidenav--collapsed"]]: t
|
|
44
44
|
});
|
|
45
|
-
return
|
|
45
|
+
return s ? /* @__PURE__ */ o(
|
|
46
46
|
g,
|
|
47
47
|
{
|
|
48
48
|
navItems: d,
|
|
49
|
-
ariaLabel:
|
|
49
|
+
ariaLabel: n,
|
|
50
50
|
linkAs: p,
|
|
51
51
|
isOpen: u,
|
|
52
52
|
onClose: () => C(!1),
|
|
53
|
-
showOverlay:
|
|
53
|
+
showOverlay: I,
|
|
54
54
|
className: c,
|
|
55
55
|
...f
|
|
56
56
|
}
|
|
57
|
-
) : /* @__PURE__ */ o(G, { visibility: "hide", children: /* @__PURE__ */ T("nav", { id:
|
|
58
|
-
P && /* @__PURE__ */ o(
|
|
59
|
-
/* @__PURE__ */ o("ul", { className: a["tedi-sidenav__list"], role: "menubar", "aria-label":
|
|
60
|
-
|
|
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:
|
|
67
|
+
sideNavItemSize: S
|
|
68
68
|
}
|
|
69
69
|
)) })
|
|
70
70
|
] }) });
|
|
71
71
|
}, te = Object.assign(Q, {
|
|
72
|
-
Toggle:
|
|
73
|
-
Item:
|
|
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;
|