@tedi-design-system/react 18.0.0-rc.1 → 18.0.0-rc.11
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 +2 -4
- package/_virtual/index.es14.js +2 -2
- package/_virtual/index.es5.js +4 -2
- 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/@floating-ui/core/dist/floating-ui.core.cjs.js +1 -1
- package/external/@floating-ui/core/dist/floating-ui.core.es.js +275 -271
- package/external/@floating-ui/dom/dist/floating-ui.dom.cjs.js +1 -1
- package/external/@floating-ui/dom/dist/floating-ui.dom.es.js +189 -188
- package/external/@floating-ui/react/dist/floating-ui.react.cjs.js +1 -1
- package/external/@floating-ui/react/dist/floating-ui.react.es.js +1419 -1538
- package/external/@floating-ui/react/dist/floating-ui.react.utils.cjs.js +1 -1
- package/external/@floating-ui/react/dist/floating-ui.react.utils.es.js +348 -81
- package/external/@floating-ui/react-dom/dist/floating-ui.react-dom.cjs.js +1 -1
- package/external/@floating-ui/react-dom/dist/floating-ui.react-dom.es.js +113 -93
- package/external/@floating-ui/utils/dist/floating-ui.utils.cjs.js +1 -1
- package/external/@floating-ui/utils/dist/floating-ui.utils.dom.cjs.js +1 -1
- package/external/@floating-ui/utils/dist/floating-ui.utils.dom.es.js +97 -97
- package/external/@floating-ui/utils/dist/floating-ui.utils.es.js +66 -68
- 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/lodash-es/_baseUnset.cjs.js +1 -1
- package/external/lodash-es/_baseUnset.es.js +12 -19
- package/external/react-is/index.cjs.js +1 -1
- package/external/react-is/index.es.js +1 -1
- package/external/tabbable/dist/index.esm.cjs.js +1 -1
- package/external/tabbable/dist/index.esm.es.js +72 -63
- package/external/toposort/index.cjs.js +1 -1
- package/external/toposort/index.es.js +1 -1
- package/index.css +1 -1
- package/package.json +4 -4
- package/src/community/components/form/pickers/calendar/calendar.d.ts +6 -0
- package/src/community/components/form/pickers/datepicker/datepicker.d.ts +6 -0
- package/src/community/components/form/pickers/datetimepicker/datetimepicker.d.ts +6 -0
- package/src/community/components/form/pickers/timepicker/timepicker.d.ts +6 -0
- package/src/community/components/modal/modal-closer.d.ts +6 -0
- package/src/community/components/modal/modal-provider.d.ts +6 -0
- package/src/community/components/modal/modal-trigger.d.ts +6 -0
- package/src/community/components/modal/modal.d.ts +6 -0
- package/src/community/components/placeholder/placeholder.d.ts +5 -0
- package/src/tedi/components/buttons/button-group/button-group.cjs.js +1 -1
- package/src/tedi/components/buttons/button-group/button-group.es.js +4 -4
- package/src/tedi/components/buttons/collapse/collapse.cjs.js +1 -1
- package/src/tedi/components/buttons/collapse/collapse.d.ts +23 -0
- package/src/tedi/components/buttons/collapse/collapse.es.js +62 -59
- package/src/tedi/components/buttons/collapse/collapse.module.scss.cjs.js +1 -1
- package/src/tedi/components/buttons/collapse/collapse.module.scss.es.js +2 -1
- package/src/tedi/components/content/calendar/calendar-grid.cjs.js +1 -1
- package/src/tedi/components/content/calendar/calendar-grid.es.js +7 -6
- package/src/tedi/components/content/calendar/calendar.cjs.js +1 -1
- package/src/tedi/components/content/calendar/calendar.d.ts +9 -1
- package/src/tedi/components/content/calendar/calendar.es.js +72 -71
- package/src/tedi/components/content/calendar/calendar.module.scss.cjs.js +1 -1
- package/src/tedi/components/content/calendar/calendar.module.scss.es.js +3 -2
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.cjs.js +1 -1
- package/src/tedi/components/content/calendar/components/calendar-header/calendar-header.es.js +99 -79
- package/src/tedi/components/content/table/index.d.ts +6 -0
- package/src/tedi/components/content/table/table-columns-menu/table-columns-menu.cjs.js +1 -0
- package/src/tedi/components/content/table/table-columns-menu/table-columns-menu.d.ts +15 -0
- package/src/tedi/components/content/table/table-columns-menu/table-columns-menu.es.js +37 -0
- package/src/tedi/components/content/table/table-context.cjs.js +1 -0
- package/src/tedi/components/content/table/table-context.d.ts +3 -0
- package/src/tedi/components/content/table/table-context.es.js +11 -0
- package/src/tedi/components/content/table/table-header-button/table-header-button.cjs.js +1 -0
- package/src/tedi/components/content/table/table-header-button/table-header-button.d.ts +51 -0
- package/src/tedi/components/content/table/table-header-button/table-header-button.es.js +42 -0
- package/src/tedi/components/content/table/table-header-button/table-header-button.module.scss.cjs.js +1 -0
- package/src/tedi/components/content/table/table-header-button/table-header-button.module.scss.es.js +7 -0
- package/src/tedi/components/content/table/table-toolbar/table-toolbar.cjs.js +1 -0
- package/src/tedi/components/content/table/table-toolbar/table-toolbar.d.ts +21 -0
- package/src/tedi/components/content/table/table-toolbar/table-toolbar.es.js +9 -0
- package/src/tedi/components/content/table/table.cjs.js +1 -0
- package/src/tedi/components/content/table/table.d.ts +519 -0
- package/src/tedi/components/content/table/table.es.js +856 -0
- package/src/tedi/components/content/table/table.module.scss.cjs.js +1 -0
- package/src/tedi/components/content/table/table.module.scss.es.js +54 -0
- package/src/tedi/components/content/table/use-table-persistence.cjs.js +1 -0
- package/src/tedi/components/content/table/use-table-persistence.d.ts +13 -0
- package/src/tedi/components/content/table/use-table-persistence.es.js +53 -0
- package/src/tedi/components/filter/filter/filter-group-context.cjs.js +1 -0
- package/src/tedi/components/filter/filter/filter-group-context.d.ts +8 -0
- package/src/tedi/components/filter/filter/filter-group-context.es.js +5 -0
- package/src/tedi/components/filter/filter/filter-group.cjs.js +1 -0
- package/src/tedi/components/filter/filter/filter-group.d.ts +94 -0
- package/src/tedi/components/filter/filter/filter-group.es.js +64 -0
- package/src/tedi/components/filter/filter/filter.cjs.js +1 -0
- package/src/tedi/components/filter/filter/filter.d.ts +98 -0
- package/src/tedi/components/filter/filter/filter.es.js +236 -0
- package/src/tedi/components/filter/filter/filter.module.scss.cjs.js +1 -0
- package/src/tedi/components/filter/filter/filter.module.scss.es.js +21 -0
- package/src/tedi/components/filter/filter/index.d.ts +3 -0
- package/src/tedi/components/form/date-field/date-field-helpers.cjs.js +1 -0
- package/src/tedi/components/form/date-field/date-field-helpers.d.ts +66 -0
- package/src/tedi/components/form/date-field/date-field-helpers.es.js +28 -0
- package/src/tedi/components/form/date-field/date-field.cjs.js +1 -1
- package/src/tedi/components/form/date-field/date-field.d.ts +22 -0
- package/src/tedi/components/form/date-field/date-field.es.js +248 -212
- package/src/tedi/components/form/date-time-field/date-time-field.cjs.js +1 -0
- package/src/tedi/components/form/date-time-field/date-time-field.d.ts +207 -0
- package/src/tedi/components/form/date-time-field/date-time-field.es.js +376 -0
- package/src/tedi/components/form/date-time-field/date-time-field.module.scss.cjs.js +1 -0
- package/src/tedi/components/form/date-time-field/date-time-field.module.scss.es.js +30 -0
- package/src/tedi/components/form/input-group/components/input/input.cjs.js +1 -1
- package/src/tedi/components/form/input-group/components/input/input.es.js +14 -13
- package/src/tedi/components/form/input-group/components/prefix/prefix.cjs.js +1 -1
- package/src/tedi/components/form/input-group/components/prefix/prefix.es.js +16 -16
- package/src/tedi/components/form/input-group/components/suffix/suffix.cjs.js +1 -1
- package/src/tedi/components/form/input-group/components/suffix/suffix.es.js +12 -12
- package/src/tedi/components/form/input-group/input-group.cjs.js +1 -1
- package/src/tedi/components/form/input-group/input-group.d.ts +13 -0
- package/src/tedi/components/form/input-group/input-group.es.js +47 -45
- package/src/tedi/components/form/input-group/input-group.module.scss.cjs.js +1 -1
- package/src/tedi/components/form/input-group/input-group.module.scss.es.js +2 -0
- package/src/tedi/components/form/search/search.cjs.js +1 -1
- package/src/tedi/components/form/search/search.es.js +22 -20
- package/src/tedi/components/form/time-field/time-field.cjs.js +1 -1
- package/src/tedi/components/form/time-field/time-field.d.ts +9 -0
- package/src/tedi/components/form/time-field/time-field.es.js +80 -78
- 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/components/navigation/pagination/index.d.ts +1 -0
- package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.cjs.js +1 -0
- package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.d.ts +36 -0
- package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.es.js +65 -0
- package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.module.scss.cjs.js +1 -0
- package/src/tedi/components/navigation/pagination/pagination-mobile-modal/pagination-mobile-modal.module.scss.es.js +13 -0
- package/src/tedi/components/navigation/pagination/pagination.cjs.js +1 -1
- package/src/tedi/components/navigation/pagination/pagination.d.ts +115 -13
- package/src/tedi/components/navigation/pagination/pagination.es.js +244 -96
- package/src/tedi/components/navigation/pagination/pagination.module.scss.cjs.js +1 -1
- package/src/tedi/components/navigation/pagination/pagination.module.scss.es.js +18 -1
- package/src/tedi/components/notifications/alert/alert.cjs.js +1 -1
- package/src/tedi/components/notifications/alert/alert.d.ts +14 -1
- package/src/tedi/components/notifications/alert/alert.es.js +45 -42
- package/src/tedi/components/notifications/alert/alert.module.scss.cjs.js +1 -1
- package/src/tedi/components/notifications/alert/alert.module.scss.es.js +2 -1
- package/src/tedi/components/overlays/dropdown/dropdown.es.js +0 -3
- package/src/tedi/components/overlays/modal/index.d.ts +8 -0
- package/src/tedi/components/overlays/modal/modal-body/modal-body.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-body/modal-body.d.ts +22 -0
- package/src/tedi/components/overlays/modal/modal-body/modal-body.es.js +21 -0
- package/src/tedi/components/overlays/modal/modal-closer/modal-closer.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-closer/modal-closer.d.ts +15 -0
- package/src/tedi/components/overlays/modal/modal-closer/modal-closer.es.js +16 -0
- package/src/tedi/components/overlays/modal/modal-content/modal-content.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-content/modal-content.d.ts +108 -0
- package/src/tedi/components/overlays/modal/modal-content/modal-content.es.js +81 -0
- package/src/tedi/components/overlays/modal/modal-context.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-context.d.ts +59 -0
- package/src/tedi/components/overlays/modal/modal-context.es.js +15 -0
- package/src/tedi/components/overlays/modal/modal-footer/modal-footer.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-footer/modal-footer.d.ts +22 -0
- package/src/tedi/components/overlays/modal/modal-footer/modal-footer.es.js +25 -0
- package/src/tedi/components/overlays/modal/modal-header/modal-header.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-header/modal-header.d.ts +58 -0
- package/src/tedi/components/overlays/modal/modal-header/modal-header.es.js +25 -0
- package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.d.ts +13 -0
- package/src/tedi/components/overlays/modal/modal-trigger/modal-trigger.es.js +14 -0
- package/src/tedi/components/overlays/modal/modal.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal.d.ts +68 -0
- package/src/tedi/components/overlays/modal/modal.es.js +76 -0
- package/src/tedi/components/overlays/modal/modal.module.scss.cjs.js +1 -0
- package/src/tedi/components/overlays/modal/modal.module.scss.es.js +37 -0
- package/src/tedi/components/overlays/overlay/overlay-content.cjs.js +1 -1
- package/src/tedi/components/overlays/overlay/overlay-content.es.js +35 -32
- package/src/tedi/components/overlays/tooltip/tooltip.cjs.js +1 -1
- package/src/tedi/components/overlays/tooltip/tooltip.es.js +14 -6
- 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/helpers/hooks/use-sidenav-state.d.ts +1 -1
- package/src/tedi/index.d.ts +6 -0
- package/src/tedi/providers/label-provider/labels-map.cjs.js +1 -1
- package/src/tedi/providers/label-provider/labels-map.d.ts +174 -6
- package/src/tedi/providers/label-provider/labels-map.es.js +234 -57
- package/tedi.cjs.js +1 -1
- package/tedi.es.js +257 -202
- 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
|
@@ -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;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { jsxs as _, jsx as i } from "react/jsx-runtime";
|
|
2
|
+
import t from "../../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import { forwardRef as P } from "react";
|
|
4
|
+
import { Icon as v } from "../../../../base/icon/icon.es.js";
|
|
5
|
+
import e from "../../top-nav.module.scss.es.js";
|
|
6
|
+
const f = P(
|
|
7
|
+
(b, h) => {
|
|
8
|
+
const {
|
|
9
|
+
children: N,
|
|
10
|
+
href: p,
|
|
11
|
+
icon: n,
|
|
12
|
+
isActive: s = !1,
|
|
13
|
+
hasSubmenu: r = !1,
|
|
14
|
+
disabled: a = !1,
|
|
15
|
+
onClick: m,
|
|
16
|
+
as: I,
|
|
17
|
+
className: y,
|
|
18
|
+
submenu: g,
|
|
19
|
+
renderSubmenuInline: k = !1,
|
|
20
|
+
isSubmenuOpen: w,
|
|
21
|
+
panelId: l,
|
|
22
|
+
...x
|
|
23
|
+
} = b, c = !p && r, C = I ?? (c ? "button" : "a"), o = w ?? s, d = k && o && r, S = (u) => {
|
|
24
|
+
if (a) {
|
|
25
|
+
u.preventDefault();
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
m == null || m(u);
|
|
29
|
+
}, T = t(
|
|
30
|
+
e["tedi-top-nav__link"],
|
|
31
|
+
{
|
|
32
|
+
[e["tedi-top-nav__link--active"]]: s || o
|
|
33
|
+
},
|
|
34
|
+
y
|
|
35
|
+
), z = {
|
|
36
|
+
...x,
|
|
37
|
+
ref: h,
|
|
38
|
+
className: T,
|
|
39
|
+
onClick: S,
|
|
40
|
+
...c ? {
|
|
41
|
+
type: "button",
|
|
42
|
+
disabled: a,
|
|
43
|
+
"aria-haspopup": !0,
|
|
44
|
+
"aria-expanded": o,
|
|
45
|
+
"aria-controls": l
|
|
46
|
+
} : {
|
|
47
|
+
href: a ? void 0 : p,
|
|
48
|
+
"aria-current": s ? "page" : void 0,
|
|
49
|
+
"aria-disabled": a || void 0
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
return /* @__PURE__ */ _(
|
|
53
|
+
"li",
|
|
54
|
+
{
|
|
55
|
+
className: t(e["tedi-top-nav__item"], {
|
|
56
|
+
[e["tedi-top-nav__item--has-inline-submenu"]]: d
|
|
57
|
+
}),
|
|
58
|
+
children: [
|
|
59
|
+
/* @__PURE__ */ _(C, { ...z, children: [
|
|
60
|
+
n && /* @__PURE__ */ i(
|
|
61
|
+
v,
|
|
62
|
+
{
|
|
63
|
+
className: e["tedi-top-nav__icon"],
|
|
64
|
+
...typeof n == "string" ? { name: n } : n,
|
|
65
|
+
size: typeof n == "string" ? 18 : n.size ?? 18,
|
|
66
|
+
color: "inherit"
|
|
67
|
+
}
|
|
68
|
+
),
|
|
69
|
+
N,
|
|
70
|
+
r && /* @__PURE__ */ i(
|
|
71
|
+
v,
|
|
72
|
+
{
|
|
73
|
+
className: t(e["tedi-top-nav__icon"], e["tedi-top-nav__chevron"], {
|
|
74
|
+
[e["tedi-top-nav__chevron--open"]]: o
|
|
75
|
+
}),
|
|
76
|
+
name: "keyboard_arrow_down",
|
|
77
|
+
size: 18,
|
|
78
|
+
color: "inherit"
|
|
79
|
+
}
|
|
80
|
+
)
|
|
81
|
+
] }),
|
|
82
|
+
d && /* @__PURE__ */ i(
|
|
83
|
+
"div",
|
|
84
|
+
{
|
|
85
|
+
id: l,
|
|
86
|
+
className: t(e["tedi-top-nav__submenu"], e["tedi-top-nav__submenu--inline"]),
|
|
87
|
+
"data-name": "top-nav-submenu",
|
|
88
|
+
children: /* @__PURE__ */ i("div", { className: t(e["tedi-top-nav__submenu-inner"], e["tedi-top-nav__submenu-inner--inline"]), children: g })
|
|
89
|
+
}
|
|
90
|
+
)
|
|
91
|
+
]
|
|
92
|
+
}
|
|
93
|
+
);
|
|
94
|
+
}
|
|
95
|
+
);
|
|
96
|
+
f.displayName = "TopNav.Item";
|
|
97
|
+
const B = f;
|
|
98
|
+
export {
|
|
99
|
+
B as TopNavItem,
|
|
100
|
+
B as default
|
|
101
|
+
};
|
package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.cjs.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),o=require("../../../../../../../external/classnames/index.cjs.js"),t=require("../../top-nav.module.scss.cjs.js"),e=({className:r})=>a.jsx("li",{role:"separator","aria-orientation":"vertical",className:o.default(t.default["tedi-top-nav__separator"],r),children:a.jsx("span",{className:t.default["tedi-top-nav__separator-line"],"aria-hidden":"true"})});e.displayName="TopNav.Separator";exports.TopNavSeparator=e;exports.default=e;
|
package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.d.ts
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TopNavSeparatorProps {
|
|
2
|
+
/**
|
|
3
|
+
* Additional class name applied to the separator list item.
|
|
4
|
+
*/
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const TopNavSeparator: {
|
|
8
|
+
({ className }: TopNavSeparatorProps): JSX.Element;
|
|
9
|
+
displayName: string;
|
|
10
|
+
};
|
|
11
|
+
export default TopNavSeparator;
|
package/src/tedi/components/layout/top-nav/components/top-nav-separator/top-nav-separator.es.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import o from "../../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import r from "../../top-nav.module.scss.es.js";
|
|
4
|
+
const t = ({ className: e }) => /* @__PURE__ */ a("li", { role: "separator", "aria-orientation": "vertical", className: o(r["tedi-top-nav__separator"], e), children: /* @__PURE__ */ a("span", { className: r["tedi-top-nav__separator-line"], "aria-hidden": "true" }) });
|
|
5
|
+
t.displayName = "TopNav.Separator";
|
|
6
|
+
export {
|
|
7
|
+
t as TopNavSeparator,
|
|
8
|
+
t as default
|
|
9
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),_=require("../../../../../../../external/classnames/index.cjs.js"),S=require("react"),o=require("../../top-nav.module.scss.cjs.js"),x=require("../../top-nav-context.cjs.js"),n=S.forwardRef((i,r)=>{const{children:c,href:l,isActive:s=!1,onClick:e,as:d,className:m,...p}=i,v=d||"a",t=x.useTopNavContext(),b=N=>{e==null||e(N),t==null||t.closeSubmenu()},f={...p,ref:r,className:_.default(o.default["tedi-top-nav__subitem-link"],{[o.default["tedi-top-nav__subitem-link--active"]]:s},m),href:l,"aria-current":s?"page":void 0,onClick:b};return a.jsx("li",{className:o.default["tedi-top-nav__subitem"],children:a.jsx(v,{...f,children:c})})});n.displayName="TopNav.SubItem";const u=n;exports.TopNavSubItem=u;exports.default=u;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { default as React } from 'react';
|
|
2
|
+
import { PolymorphicComponentPropWithRef } from '../../../../../helpers/polymorphic/types';
|
|
3
|
+
type TopNavSubItemBaseProps = {
|
|
4
|
+
/**
|
|
5
|
+
* Link label.
|
|
6
|
+
*/
|
|
7
|
+
children: React.ReactNode;
|
|
8
|
+
/**
|
|
9
|
+
* Destination URL.
|
|
10
|
+
*/
|
|
11
|
+
href?: string;
|
|
12
|
+
/**
|
|
13
|
+
* Marks this submenu item as the current page.
|
|
14
|
+
* @default false
|
|
15
|
+
*/
|
|
16
|
+
isActive?: boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Click handler. Receives the original mouse / keyboard event.
|
|
19
|
+
*/
|
|
20
|
+
onClick?: (event: React.MouseEvent | React.KeyboardEvent) => void;
|
|
21
|
+
/**
|
|
22
|
+
* Additional class name applied to the link element.
|
|
23
|
+
*/
|
|
24
|
+
className?: string;
|
|
25
|
+
};
|
|
26
|
+
export type TopNavSubItemProps<C extends React.ElementType = 'a'> = PolymorphicComponentPropWithRef<C, TopNavSubItemBaseProps>;
|
|
27
|
+
export declare const TopNavSubItem: <C extends React.ElementType = "a">(props: TopNavSubItemProps<C>) => React.ReactElement | null;
|
|
28
|
+
export default TopNavSubItem;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { jsx as a } from "react/jsx-runtime";
|
|
2
|
+
import b from "../../../../../../../external/classnames/index.es.js";
|
|
3
|
+
import { forwardRef as _ } from "react";
|
|
4
|
+
import o from "../../top-nav.module.scss.es.js";
|
|
5
|
+
import { useTopNavContext as h } from "../../top-nav-context.es.js";
|
|
6
|
+
const m = _(
|
|
7
|
+
(n, i) => {
|
|
8
|
+
const { children: r, href: c, isActive: s = !1, onClick: e, as: p, className: l, ...u } = n, d = p || "a", t = h(), f = (N) => {
|
|
9
|
+
e == null || e(N), t == null || t.closeSubmenu();
|
|
10
|
+
}, v = {
|
|
11
|
+
...u,
|
|
12
|
+
ref: i,
|
|
13
|
+
className: b(
|
|
14
|
+
o["tedi-top-nav__subitem-link"],
|
|
15
|
+
{ [o["tedi-top-nav__subitem-link--active"]]: s },
|
|
16
|
+
l
|
|
17
|
+
),
|
|
18
|
+
href: c,
|
|
19
|
+
"aria-current": s ? "page" : void 0,
|
|
20
|
+
onClick: f
|
|
21
|
+
};
|
|
22
|
+
return /* @__PURE__ */ a("li", { className: o["tedi-top-nav__subitem"], children: /* @__PURE__ */ a(d, { ...v, children: r }) });
|
|
23
|
+
}
|
|
24
|
+
);
|
|
25
|
+
m.displayName = "TopNav.SubItem";
|
|
26
|
+
const I = m;
|
|
27
|
+
export {
|
|
28
|
+
I as TopNavSubItem,
|
|
29
|
+
I as default
|
|
30
|
+
};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export * from './components/top-nav-group/top-nav-group';
|
|
2
|
+
export * from './components/top-nav-item/top-nav-item';
|
|
3
|
+
export * from './components/top-nav-separator/top-nav-separator';
|
|
4
|
+
export * from './components/top-nav-subitem/top-nav-subitem';
|
|
5
|
+
export * from './top-nav';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("react"),e=t.createContext(null),o=()=>t.useContext(e);exports.TopNavContext=e;exports.useTopNavContext=o;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface TopNavContextValue {
|
|
2
|
+
/**
|
|
3
|
+
* Closes the open desktop submenu (mega-menu) panel. Called by `TopNav.SubItem`
|
|
4
|
+
* when a submenu link is activated so the panel dismisses on navigation
|
|
5
|
+
* (important for SPA / client-side routing where the nav stays mounted).
|
|
6
|
+
* No-op when there is no open panel.
|
|
7
|
+
*/
|
|
8
|
+
closeSubmenu: () => void;
|
|
9
|
+
}
|
|
10
|
+
export declare const TopNavContext: import('react').Context<TopNavContextValue | null>;
|
|
11
|
+
export declare const useTopNavContext: () => TopNavContextValue | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const a=require("react/jsx-runtime"),ne=require("../../../../../external/classnames/index.cjs.js"),t=require("react"),oe=require("../mobile-nav/mobile-nav.cjs.js"),W=require("./components/top-nav-group/top-nav-group.cjs.js"),g=require("./components/top-nav-item/top-nav-item.cjs.js"),G=require("./components/top-nav-separator/top-nav-separator.cjs.js"),R=require("./components/top-nav-subitem/top-nav-subitem.cjs.js"),v=require("./top-nav.module.scss.cjs.js"),se=require("./top-nav-context.cjs.js"),C=require("../../../helpers/hooks/use-breakpoint.cjs.js"),re=n=>{if(!(n===void 0||n==="none"||n===0))return typeof n=="string"&&n!=="xs"&&n in C.BREAKPOINT_WIDTHS?C.BREAKPOINT_WIDTHS[n]:n},L=n=>{const r=[];return t.Children.forEach(n,o=>{if(t.isValidElement(o)){if(o.type===t.Fragment){r.push(...L(o.props.children));return}(o.type===g.TopNavItem||o.type===G.TopNavSeparator)&&r.push(o)}}),r},A=n=>n.type===g.TopNavItem,ie=n=>({children:n.props.children,href:n.props.href,isActive:n.props.isActive,onClick:n.props.onClick}),P=n=>{if(!n)return;const r=[];return t.Children.forEach(n,o=>{if(!t.isValidElement(o))return;if(o.type===t.Fragment){const i=P(o.props.children);i&&r.push(...i);return}if(o.type!==W.TopNavGroup)return;const f=o.props,c=[];t.Children.forEach(f.children,i=>{t.isValidElement(i)&&i.type===R.TopNavSubItem&&c.push(ie(i))}),c.length>0&&r.push({subHeading:f.title,subItems:c})}),r.length>0?r:void 0},p=n=>{const{children:r,ariaLabel:o,mobileBreakpoint:f="md",isMobileOpen:c,onMenuToggle:i,showMobileOverlay:V=!0,className:O,id:D,submenuFit:F="full",maxWidth:H="xxl"}=n,K=C.useBreakpoint(),T=C.isBreakpointBelow(K,f),b=c!==void 0,[$,_]=t.useState(!1),z=b?c:$;t.useEffect(()=>{!b&&!T&&_(!1)},[T,b]);const J=e=>{b||_(e),i==null||i(e)},E=t.useMemo(()=>L(r),[r]),l=t.useMemo(()=>E.filter(A),[E]),k=e=>!e.props.href&&t.Children.count(e.props.submenu)>0,M=t.useMemo(()=>{const e=l.findIndex(s=>k(s)&&s.props.isActive);return e===-1?null:e},[l]),[N,d]=t.useState(M);t.useEffect(()=>{d(M)},[M]);const q=t.useCallback(()=>d(null),[]),Q=t.useMemo(()=>({closeSubmenu:q}),[q]),I=t.useRef(null),h=t.useId();t.useEffect(()=>{if(N===null)return;const e=u=>{I.current&&!I.current.contains(u.target)&&d(null)},s=u=>{var S;if(u.key!=="Escape")return;const m=(S=I.current)==null?void 0:S.querySelector(`[aria-controls="${CSS.escape(h)}"][aria-expanded="true"]`);m==null||m.focus(),d(null)};return document.addEventListener("mousedown",e),document.addEventListener("keydown",s),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("keydown",s)}},[N,h]);const w=(e,s)=>k(e)?N===s:!!e.props.isActive,B=t.useMemo(()=>l.find((e,s)=>w(e,s)&&t.Children.count(e.props.submenu)>0),[l,N]),U=t.useMemo(()=>l.map(e=>({children:e.props.children,disabled:e.props.disabled,href:e.props.href,icon:e.props.icon,isActive:e.props.isActive,onClick:e.props.onClick,subItemGroups:P(e.props.submenu)})),[l]);if(T)return a.jsx(oe.MobileNav,{navItems:U,ariaLabel:o,isOpen:z,onClose:()=>J(!1),showOverlay:V,className:O});const j=F==="content",x=re(H);let X=0;return a.jsx(se.TopNavContext.Provider,{value:Q,children:a.jsxs("nav",{ref:I,id:D,className:ne.default(v.default["tedi-top-nav"],O),"aria-label":o,"data-name":"top-nav",children:[a.jsx("div",{className:v.default["tedi-top-nav__bar"],children:a.jsx("ul",{className:v.default["tedi-top-nav__list"],style:x!==void 0?{maxWidth:x}:void 0,children:E.map((e,s)=>{if(A(e)){const u=X++,m=t.Children.count(e.props.submenu)>0,S=k(e),Y=w(e,u),y=e.props.onClick,Z=S?ee=>{y==null||y(ee),d(te=>te===u?null:u)}:y;return t.cloneElement(e,{key:s,hasSubmenu:m,renderSubmenuInline:j,isSubmenuOpen:Y,panelId:h,onClick:Z})}return t.cloneElement(e,{key:s})})})}),!j&&B&&a.jsx("div",{id:h,className:v.default["tedi-top-nav__submenu"],"data-name":"top-nav-submenu",children:a.jsx("div",{className:v.default["tedi-top-nav__submenu-inner"],style:x!==void 0?{maxWidth:x}:void 0,children:B.props.submenu})})]})})};p.displayName="TopNav";p.Item=g.TopNavItem;p.Group=W.TopNavGroup;p.SubItem=R.TopNavSubItem;p.Separator=G.TopNavSeparator;exports.TopNav=p;exports.default=p;
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { default as React, ReactNode } from 'react';
|
|
2
|
+
import { Breakpoint } from '../../../helpers';
|
|
3
|
+
import { TopNavGroupProps } from './components/top-nav-group/top-nav-group';
|
|
4
|
+
import { TopNavItemProps } from './components/top-nav-item/top-nav-item';
|
|
5
|
+
import { TopNavSubItemProps } from './components/top-nav-subitem/top-nav-subitem';
|
|
6
|
+
type BreakpointWidthName = Exclude<Breakpoint, 'xs'>;
|
|
7
|
+
export type TopNavMaxWidth = number | BreakpointWidthName | (string & {});
|
|
8
|
+
export interface TopNavProps {
|
|
9
|
+
/**
|
|
10
|
+
* `TopNav.Item` and `TopNav.Separator` children. Any other
|
|
11
|
+
* React node is ignored. Fragments are flattened, so `<>…</>` wrappers work
|
|
12
|
+
* transparently.
|
|
13
|
+
*/
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
/**
|
|
16
|
+
* Accessible name for the wrapping `<nav>` landmark.
|
|
17
|
+
*/
|
|
18
|
+
ariaLabel: string;
|
|
19
|
+
/**
|
|
20
|
+
* Breakpoint below which the bar collapses into the shared Sidenav mobile
|
|
21
|
+
* drawer. Pass any TEDI breakpoint name (`xs`/`sm`/`md`/`lg`/`xl`/`xxl`).
|
|
22
|
+
* @default md
|
|
23
|
+
*/
|
|
24
|
+
mobileBreakpoint?: Breakpoint;
|
|
25
|
+
/**
|
|
26
|
+
* Controlled open state for the mobile drawer. Pair with `onMenuToggle`
|
|
27
|
+
* to wire it to an external toggle button.
|
|
28
|
+
*/
|
|
29
|
+
isMobileOpen?: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Fires whenever the mobile drawer opens or closes.
|
|
32
|
+
*/
|
|
33
|
+
onMenuToggle?: (open: boolean) => void;
|
|
34
|
+
/**
|
|
35
|
+
* Dim the rest of the viewport when the mobile drawer is open.
|
|
36
|
+
* @default true
|
|
37
|
+
*/
|
|
38
|
+
showMobileOverlay?: boolean;
|
|
39
|
+
/**
|
|
40
|
+
* Additional class name applied to the desktop `<nav>`.
|
|
41
|
+
*/
|
|
42
|
+
className?: string;
|
|
43
|
+
/**
|
|
44
|
+
* Element id forwarded to the desktop `<nav>`.
|
|
45
|
+
*/
|
|
46
|
+
id?: string;
|
|
47
|
+
/**
|
|
48
|
+
* Controls how the submenu (mega-menu) panel sizes and positions itself
|
|
49
|
+
* when the active item has submenu content. Both options use the same
|
|
50
|
+
* padding — this only affects the panel's width and horizontal position,
|
|
51
|
+
* not its density.
|
|
52
|
+
*
|
|
53
|
+
* - `'full'` (default) — the panel stretches to the full nav width and is
|
|
54
|
+
* centered, suitable for wide multi-column mega-menus.
|
|
55
|
+
* - `'content'` — the panel is only as wide as its content and sits
|
|
56
|
+
* left-aligned directly under the active item (it is *not* a smaller /
|
|
57
|
+
* tighter variant — just not stretched). Good for single- or few-column
|
|
58
|
+
* menus.
|
|
59
|
+
* @default full
|
|
60
|
+
*/
|
|
61
|
+
submenuFit?: 'full' | 'content';
|
|
62
|
+
/**
|
|
63
|
+
* Constrains the inner content (item bar and full-width submenu inner) to a
|
|
64
|
+
* maximum width and centers it inside the blue `<nav>` background. Pass any
|
|
65
|
+
* valid CSS length (e.g. `1440`, `'1440px'`, `'90rem'`), or a TEDI breakpoint
|
|
66
|
+
* name (`'sm' | 'md' | 'lg' | 'xl' | 'xxl'`) — these resolve to the
|
|
67
|
+
* breakpoint's `min-width` (36rem / 48rem / 62rem / 75rem / 87.5rem
|
|
68
|
+
* respectively), useful for aligning the nav inner with a breakpoint-driven
|
|
69
|
+
* content container. The `<nav>` itself still spans 100% of its container.
|
|
70
|
+
*
|
|
71
|
+
* Pass `'none'` (or `0`) to disable the constraint and let the bar fill the
|
|
72
|
+
* full width of the nav.
|
|
73
|
+
* @default xxl
|
|
74
|
+
*/
|
|
75
|
+
maxWidth?: TopNavMaxWidth | 'none';
|
|
76
|
+
}
|
|
77
|
+
export declare const TopNav: {
|
|
78
|
+
(props: TopNavProps): React.ReactElement | null;
|
|
79
|
+
displayName: string;
|
|
80
|
+
Item: <C extends React.ElementType = "a">(props: TopNavItemProps<C>) => React.ReactElement | null;
|
|
81
|
+
Group: {
|
|
82
|
+
({ title, children, icon, headingLevel, className, }: TopNavGroupProps): JSX.Element;
|
|
83
|
+
displayName: string;
|
|
84
|
+
};
|
|
85
|
+
SubItem: <C extends React.ElementType = "a">(props: TopNavSubItemProps<C>) => React.ReactElement | null;
|
|
86
|
+
Separator: {
|
|
87
|
+
({ className }: import('./components/top-nav-separator/top-nav-separator').TopNavSeparatorProps): JSX.Element;
|
|
88
|
+
displayName: string;
|
|
89
|
+
};
|
|
90
|
+
};
|
|
91
|
+
export default TopNav;
|