@trebired/frontend 28.1.0 → 29.0.0
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/CHANGELOG.md +33 -0
- package/README.md +80 -6
- package/dist/config/default/config.d.ts.map +1 -1
- package/dist/config/default/config.js +2 -0
- package/dist/config/default/config.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/links.d.ts +5 -0
- package/dist/config/links.d.ts.map +1 -0
- package/dist/config/links.js +134 -0
- package/dist/config/links.js.map +1 -0
- package/dist/config/normalize.d.ts.map +1 -1
- package/dist/config/normalize.js +3 -0
- package/dist/config/normalize.js.map +1 -1
- package/dist/config/scss.d.ts.map +1 -1
- package/dist/config/scss.js +3 -1
- package/dist/config/scss.js.map +1 -1
- package/dist/config/types/language.d.ts +16 -0
- package/dist/config/types/language.d.ts.map +1 -0
- package/dist/config/types/language.js +2 -0
- package/dist/config/types/language.js.map +1 -0
- package/dist/config/types/links.d.ts +71 -0
- package/dist/config/types/links.d.ts.map +1 -0
- package/dist/config/types/links.js +2 -0
- package/dist/config/types/links.js.map +1 -0
- package/dist/config/types.d.ts +6 -16
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/typography.d.ts +2 -1
- package/dist/config/typography.d.ts.map +1 -1
- package/dist/config/typography.js +14 -1
- package/dist/config/typography.js.map +1 -1
- package/dist/entries/root/02.d.ts +1 -1
- package/dist/entries/root/02.d.ts.map +1 -1
- package/dist/entries/root/02.js +1 -1
- package/dist/entries/root/02.js.map +1 -1
- package/dist/hollow/bitmap.d.ts +5 -0
- package/dist/hollow/bitmap.d.ts.map +1 -0
- package/dist/hollow/bitmap.js +45 -0
- package/dist/hollow/bitmap.js.map +1 -0
- package/dist/hollow/component.d.ts +18 -0
- package/dist/hollow/component.d.ts.map +1 -0
- package/dist/hollow/component.js +44 -0
- package/dist/hollow/component.js.map +1 -0
- package/dist/hollow/index.d.ts +7 -0
- package/dist/hollow/index.d.ts.map +1 -0
- package/dist/hollow/index.js +4 -0
- package/dist/hollow/index.js.map +1 -0
- package/dist/hollow/print.d.ts +19 -0
- package/dist/hollow/print.d.ts.map +1 -0
- package/dist/hollow/print.js +103 -0
- package/dist/hollow/print.js.map +1 -0
- package/dist/hollow/shapes.d.ts +11 -0
- package/dist/hollow/shapes.d.ts.map +1 -0
- package/dist/hollow/shapes.js +65 -0
- package/dist/hollow/shapes.js.map +1 -0
- package/dist/hollow/styles/index.scss +56 -0
- package/dist/indent/styles/index.scss +24 -0
- package/dist/inputs/advanced/input/styles/field.scss +2 -2
- package/dist/inputs/styles/field.scss +14 -3
- package/dist/language/messages.d.ts.map +1 -1
- package/dist/language/messages.js +8 -0
- package/dist/language/messages.js.map +1 -1
- package/dist/layer/index.d.ts +2 -1
- package/dist/layer/index.d.ts.map +1 -1
- package/dist/layer/index.js +6 -2
- package/dist/layer/index.js.map +1 -1
- package/dist/layout/components/site/footer.d.ts +3 -17
- package/dist/layout/components/site/footer.d.ts.map +1 -1
- package/dist/layout/components/site/footer.js +15 -15
- package/dist/layout/components/site/footer.js.map +1 -1
- package/dist/layout/components/site/header/groups.d.ts +44 -0
- package/dist/layout/components/site/header/groups.d.ts.map +1 -0
- package/dist/layout/components/site/header/groups.js +92 -0
- package/dist/layout/components/site/header/groups.js.map +1 -0
- package/dist/layout/components/site/header/search.d.ts +11 -0
- package/dist/layout/components/site/header/search.d.ts.map +1 -0
- package/dist/layout/components/site/header/search.js +81 -0
- package/dist/layout/components/site/header/search.js.map +1 -0
- package/dist/layout/components/site/header/sheet.d.ts +14 -0
- package/dist/layout/components/site/header/sheet.d.ts.map +1 -0
- package/dist/layout/components/site/header/sheet.js +88 -0
- package/dist/layout/components/site/header/sheet.js.map +1 -0
- package/dist/layout/components/site/header.d.ts +1 -1
- package/dist/layout/components/site/header.d.ts.map +1 -1
- package/dist/layout/components/site/header.js +34 -43
- package/dist/layout/components/site/header.js.map +1 -1
- package/dist/layout/components/site/link.d.ts +8 -3
- package/dist/layout/components/site/link.d.ts.map +1 -1
- package/dist/layout/components/site/link.js +16 -8
- package/dist/layout/components/site/link.js.map +1 -1
- package/dist/layout/header/tone.d.ts.map +1 -1
- package/dist/layout/header/tone.js +4 -2
- package/dist/layout/header/tone.js.map +1 -1
- package/dist/layout/index.d.ts +2 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +1 -0
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/links.d.ts +29 -0
- package/dist/layout/links.d.ts.map +1 -0
- package/dist/layout/links.js +77 -0
- package/dist/layout/links.js.map +1 -0
- package/dist/layout/scroll.d.ts.map +1 -1
- package/dist/layout/scroll.js +10 -0
- package/dist/layout/scroll.js.map +1 -1
- package/dist/layout/styles/index.scss +1 -0
- package/dist/layout/styles/site/footer.scss +8 -1
- package/dist/layout/styles/site/header.scss +1 -3
- package/dist/layout/styles/site/menu.scss +17 -3
- package/dist/layout/styles/site/sheet.scss +196 -0
- package/dist/popover/index.d.ts.map +1 -1
- package/dist/popover/index.js +5 -4
- package/dist/popover/index.js.map +1 -1
- package/dist/popover/styles/index.scss +1 -1
- package/dist/primitives/components/prose.d.ts.map +1 -1
- package/dist/primitives/components/prose.js +4 -3
- package/dist/primitives/components/prose.js.map +1 -1
- package/dist/primitives/styles/_link.scss +22 -8
- package/dist/reveal/index.d.ts.map +1 -1
- package/dist/reveal/index.js +41 -4
- package/dist/reveal/index.js.map +1 -1
- package/dist/reveal/styles/index.scss +10 -20
- package/dist/search/site/build.d.ts +33 -0
- package/dist/search/site/build.d.ts.map +1 -0
- package/dist/search/site/build.js +27 -0
- package/dist/search/site/build.js.map +1 -0
- package/dist/search/site/extract.d.ts +13 -0
- package/dist/search/site/extract.d.ts.map +1 -0
- package/dist/search/site/extract.js +82 -0
- package/dist/search/site/extract.js.map +1 -0
- package/dist/search/site/load.d.ts +4 -0
- package/dist/search/site/load.d.ts.map +1 -0
- package/dist/search/site/load.js +25 -0
- package/dist/search/site/load.js.map +1 -0
- package/dist/search/site/query.d.ts +31 -0
- package/dist/search/site/query.d.ts.map +1 -0
- package/dist/search/site/query.js +125 -0
- package/dist/search/site/query.js.map +1 -0
- package/dist/server/index.d.ts +2 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -0
- package/dist/server/index.js.map +1 -1
- package/dist/src/config/default/config.d.ts.map +1 -1
- package/dist/src/config/default/config.js +2 -0
- package/dist/src/config/default/config.js.map +1 -1
- package/dist/src/config/index.d.ts +1 -1
- package/dist/src/config/index.d.ts.map +1 -1
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/links.d.ts +5 -0
- package/dist/src/config/links.d.ts.map +1 -0
- package/dist/src/config/links.js +134 -0
- package/dist/src/config/links.js.map +1 -0
- package/dist/src/config/normalize.d.ts.map +1 -1
- package/dist/src/config/normalize.js +3 -0
- package/dist/src/config/normalize.js.map +1 -1
- package/dist/src/config/scss.d.ts.map +1 -1
- package/dist/src/config/scss.js +3 -1
- package/dist/src/config/scss.js.map +1 -1
- package/dist/src/config/types/language.d.ts +16 -0
- package/dist/src/config/types/language.d.ts.map +1 -0
- package/dist/src/config/types/language.js +2 -0
- package/dist/src/config/types/language.js.map +1 -0
- package/dist/src/config/types/links.d.ts +71 -0
- package/dist/src/config/types/links.d.ts.map +1 -0
- package/dist/src/config/types/links.js +2 -0
- package/dist/src/config/types/links.js.map +1 -0
- package/dist/src/config/types.d.ts +6 -16
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/config/typography.d.ts +2 -1
- package/dist/src/config/typography.d.ts.map +1 -1
- package/dist/src/config/typography.js +14 -1
- package/dist/src/config/typography.js.map +1 -1
- package/dist/src/entries/root/02.d.ts +1 -1
- package/dist/src/entries/root/02.d.ts.map +1 -1
- package/dist/src/entries/root/02.js +1 -1
- package/dist/src/entries/root/02.js.map +1 -1
- package/dist/src/hollow/bitmap.d.ts +5 -0
- package/dist/src/hollow/bitmap.d.ts.map +1 -0
- package/dist/src/hollow/bitmap.js +45 -0
- package/dist/src/hollow/bitmap.js.map +1 -0
- package/dist/src/hollow/component.d.ts +18 -0
- package/dist/src/hollow/component.d.ts.map +1 -0
- package/dist/src/hollow/component.js +44 -0
- package/dist/src/hollow/component.js.map +1 -0
- package/dist/src/hollow/index.d.ts +7 -0
- package/dist/src/hollow/index.d.ts.map +1 -0
- package/dist/src/hollow/index.js +4 -0
- package/dist/src/hollow/index.js.map +1 -0
- package/dist/src/hollow/print.d.ts +19 -0
- package/dist/src/hollow/print.d.ts.map +1 -0
- package/dist/src/hollow/print.js +103 -0
- package/dist/src/hollow/print.js.map +1 -0
- package/dist/src/hollow/shapes.d.ts +11 -0
- package/dist/src/hollow/shapes.d.ts.map +1 -0
- package/dist/src/hollow/shapes.js +65 -0
- package/dist/src/hollow/shapes.js.map +1 -0
- package/dist/src/language/messages.d.ts.map +1 -1
- package/dist/src/language/messages.js +8 -0
- package/dist/src/language/messages.js.map +1 -1
- package/dist/src/layer/index.d.ts +2 -1
- package/dist/src/layer/index.d.ts.map +1 -1
- package/dist/src/layer/index.js +6 -2
- package/dist/src/layer/index.js.map +1 -1
- package/dist/src/layout/components/site/footer.d.ts +3 -17
- package/dist/src/layout/components/site/footer.d.ts.map +1 -1
- package/dist/src/layout/components/site/footer.js +15 -15
- package/dist/src/layout/components/site/footer.js.map +1 -1
- package/dist/src/layout/components/site/header/groups.d.ts +44 -0
- package/dist/src/layout/components/site/header/groups.d.ts.map +1 -0
- package/dist/src/layout/components/site/header/groups.js +92 -0
- package/dist/src/layout/components/site/header/groups.js.map +1 -0
- package/dist/src/layout/components/site/header/search.d.ts +11 -0
- package/dist/src/layout/components/site/header/search.d.ts.map +1 -0
- package/dist/src/layout/components/site/header/search.js +81 -0
- package/dist/src/layout/components/site/header/search.js.map +1 -0
- package/dist/src/layout/components/site/header/sheet.d.ts +14 -0
- package/dist/src/layout/components/site/header/sheet.d.ts.map +1 -0
- package/dist/src/layout/components/site/header/sheet.js +88 -0
- package/dist/src/layout/components/site/header/sheet.js.map +1 -0
- package/dist/src/layout/components/site/header.d.ts +1 -1
- package/dist/src/layout/components/site/header.d.ts.map +1 -1
- package/dist/src/layout/components/site/header.js +34 -43
- package/dist/src/layout/components/site/header.js.map +1 -1
- package/dist/src/layout/components/site/link.d.ts +8 -3
- package/dist/src/layout/components/site/link.d.ts.map +1 -1
- package/dist/src/layout/components/site/link.js +16 -8
- package/dist/src/layout/components/site/link.js.map +1 -1
- package/dist/src/layout/header/tone.d.ts.map +1 -1
- package/dist/src/layout/header/tone.js +4 -2
- package/dist/src/layout/header/tone.js.map +1 -1
- package/dist/src/layout/index.d.ts +2 -0
- package/dist/src/layout/index.d.ts.map +1 -1
- package/dist/src/layout/index.js +1 -0
- package/dist/src/layout/index.js.map +1 -1
- package/dist/src/layout/links.d.ts +29 -0
- package/dist/src/layout/links.d.ts.map +1 -0
- package/dist/src/layout/links.js +77 -0
- package/dist/src/layout/links.js.map +1 -0
- package/dist/src/layout/scroll.d.ts.map +1 -1
- package/dist/src/layout/scroll.js +10 -0
- package/dist/src/layout/scroll.js.map +1 -1
- package/dist/src/popover/index.d.ts.map +1 -1
- package/dist/src/popover/index.js +5 -4
- package/dist/src/popover/index.js.map +1 -1
- package/dist/src/primitives/components/prose.d.ts.map +1 -1
- package/dist/src/primitives/components/prose.js +4 -3
- package/dist/src/primitives/components/prose.js.map +1 -1
- package/dist/src/reveal/index.d.ts.map +1 -1
- package/dist/src/reveal/index.js +41 -4
- package/dist/src/reveal/index.js.map +1 -1
- package/dist/src/search/site/build.d.ts +33 -0
- package/dist/src/search/site/build.d.ts.map +1 -0
- package/dist/src/search/site/build.js +27 -0
- package/dist/src/search/site/build.js.map +1 -0
- package/dist/src/search/site/extract.d.ts +13 -0
- package/dist/src/search/site/extract.d.ts.map +1 -0
- package/dist/src/search/site/extract.js +82 -0
- package/dist/src/search/site/extract.js.map +1 -0
- package/dist/src/search/site/load.d.ts +4 -0
- package/dist/src/search/site/load.d.ts.map +1 -0
- package/dist/src/search/site/load.js +25 -0
- package/dist/src/search/site/load.js.map +1 -0
- package/dist/src/search/site/query.d.ts +31 -0
- package/dist/src/search/site/query.d.ts.map +1 -0
- package/dist/src/search/site/query.js +125 -0
- package/dist/src/search/site/query.js.map +1 -0
- package/dist/src/server/index.d.ts +2 -0
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +1 -0
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/tooltip/index.d.ts.map +1 -1
- package/dist/src/tooltip/index.js +2 -1
- package/dist/src/tooltip/index.js.map +1 -1
- package/dist/styles/tokens.scss +1 -0
- package/dist/styles/utils/_tone.scss +2 -0
- package/dist/styles/utils/text/core.scss +25 -0
- package/dist/tooltip/index.d.ts.map +1 -1
- package/dist/tooltip/index.js +2 -1
- package/dist/tooltip/index.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
import { type SiteLink } from "./../link.js";
|
|
3
|
+
import type { SiteHeaderSheet } from "./sheet.js";
|
|
4
|
+
type LinkRenderProps = {
|
|
5
|
+
currentPaths: string[];
|
|
6
|
+
currentUrl: string;
|
|
7
|
+
hasSection: boolean;
|
|
8
|
+
lang?: string;
|
|
9
|
+
onNavigate?: () => void;
|
|
10
|
+
section: string;
|
|
11
|
+
softRedirect?: boolean;
|
|
12
|
+
tabIndex?: number;
|
|
13
|
+
};
|
|
14
|
+
type GroupProps = LinkRenderProps & {
|
|
15
|
+
link: SiteLink;
|
|
16
|
+
};
|
|
17
|
+
type SheetProps = {
|
|
18
|
+
sheet: SiteHeaderSheet;
|
|
19
|
+
sheetId: string;
|
|
20
|
+
};
|
|
21
|
+
declare function useSiteLinkState(links: SiteLink[]): {
|
|
22
|
+
currentPaths: string[];
|
|
23
|
+
currentUrl: string;
|
|
24
|
+
hasSection: boolean;
|
|
25
|
+
section: string;
|
|
26
|
+
};
|
|
27
|
+
declare function SiteHeaderAnchor(props: LinkRenderProps & {
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
className?: string;
|
|
30
|
+
link: SiteLink;
|
|
31
|
+
plain?: boolean;
|
|
32
|
+
}): import("react").JSX.Element;
|
|
33
|
+
declare function SiteHeaderNavTrigger(props: GroupProps & SheetProps & {
|
|
34
|
+
index: number;
|
|
35
|
+
}): import("react").JSX.Element;
|
|
36
|
+
declare function SiteHeaderSheetPanel(props: SheetProps & {
|
|
37
|
+
lang?: string;
|
|
38
|
+
links: SiteLink[];
|
|
39
|
+
softRedirect?: boolean;
|
|
40
|
+
}): import("react").JSX.Element;
|
|
41
|
+
declare function SiteHeaderMenuGroup(props: GroupProps): import("react").JSX.Element;
|
|
42
|
+
export { SiteHeaderAnchor, SiteHeaderMenuGroup, SiteHeaderNavTrigger, SiteHeaderSheetPanel, useSiteLinkState };
|
|
43
|
+
export type { LinkRenderProps, SheetProps };
|
|
44
|
+
//# sourceMappingURL=groups.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.d.ts","sourceRoot":"","sources":["../../../../../../src/layout/components/site/header/groups.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAUL,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlD,KAAK,eAAe,GAAG;IACrB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,KAAK,UAAU,GAAG,eAAe,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvD,KAAK,UAAU,GAAG;IAAE,KAAK,EAAE,eAAe,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAQ9D,iBAAS,gBAAgB,CAAC,KAAK,EAAE,QAAQ,EAAE;;;;;EAY1C;AAED,iBAAS,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG;IAAE,QAAQ,CAAC,EAAE,SAAS,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,+BAe/H;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,+BAoB/E;AA4DD,iBAAS,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CAAE,+BAiC7G;AAiCD,iBAAS,mBAAmB,CAAC,KAAK,EAAE,UAAU,+BAe7C;AAED,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,CAAC;AAC/G,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { createElement as _createElement } from "react";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useId, useSyncExternalStore } from "react";
|
|
4
|
+
import { Disclosure, DisclosureButton } from "./../../../../inputs/components/disclosure.js";
|
|
5
|
+
import { frontendClassName, frontendDataAttrs, frontendElementClass } from "../../../../../namespace/index.js";
|
|
6
|
+
import { useRenderCurrentUrl } from "./../../../../render/current_url.js";
|
|
7
|
+
import { activeSection, observeSections, serverActiveSection, subscribeActiveSection } from "./../section_spy.js";
|
|
8
|
+
import { isSiteLinkActive, isSiteLinkGroup, SiteLinkAnchor, siteLinkChildren, SiteLinkLabel, siteLinkFragment, siteLinkKey, siteLinkOnCurrentPage, sitePathForms, } from "./../link.js";
|
|
9
|
+
import { SiteHeaderSearch } from "./search.js";
|
|
10
|
+
const block = "site-header";
|
|
11
|
+
function siteLinkLeaves(links) {
|
|
12
|
+
return links.flatMap((link) => (isSiteLinkGroup(link) ? siteLinkLeaves(siteLinkChildren(link)) : [link]));
|
|
13
|
+
}
|
|
14
|
+
function useSiteLinkState(links) {
|
|
15
|
+
const currentUrl = useRenderCurrentUrl();
|
|
16
|
+
const currentPaths = sitePathForms(currentUrl);
|
|
17
|
+
const fragments = siteLinkLeaves(links)
|
|
18
|
+
.filter((link) => siteLinkFragment(link) && siteLinkOnCurrentPage(link, currentPaths))
|
|
19
|
+
.map((link) => siteLinkFragment(link));
|
|
20
|
+
const fragmentKey = fragments.join("|");
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
observeSections(fragmentKey ? fragmentKey.split("|") : []);
|
|
23
|
+
}, [fragmentKey]);
|
|
24
|
+
const section = useSyncExternalStore(subscribeActiveSection, activeSection, serverActiveSection);
|
|
25
|
+
return { currentPaths, currentUrl, hasSection: fragments.length > 0, section };
|
|
26
|
+
}
|
|
27
|
+
function SiteHeaderAnchor(props) {
|
|
28
|
+
const { className, currentPaths, hasSection, link, section } = props;
|
|
29
|
+
return (_jsx(SiteLinkAnchor, { active: isSiteLinkActive(link, currentPaths, section, hasSection, props.currentUrl), className: className, link: link, onNavigate: props.onNavigate, plain: props.plain, softRedirect: props.softRedirect, tabIndex: props.tabIndex, children: props.children }));
|
|
30
|
+
}
|
|
31
|
+
function SiteHeaderNavTrigger(props) {
|
|
32
|
+
const { link, sheet } = props;
|
|
33
|
+
const key = String(props.index);
|
|
34
|
+
return (_jsxs("button", { "aria-controls": `${props.sheetId}_${key}`, "aria-expanded": sheet.open === key, className: frontendElementClass(block, "nav-trigger"), onClick: (event) => sheet.toggle(key, event.detail === 0), onPointerEnter: (event) => {
|
|
35
|
+
if (event.pointerType === "mouse")
|
|
36
|
+
sheet.hover(key);
|
|
37
|
+
}, tabIndex: props.tabIndex, type: "button", ...frontendDataAttrs({ "site-header-trigger": key }), children: [_jsx("span", { className: frontendClassName("text-link"), children: link.label }), _jsx("span", { "aria-hidden": "true", className: frontendElementClass(block, "nav-chevron") })] }));
|
|
38
|
+
}
|
|
39
|
+
function SheetEntry(props) {
|
|
40
|
+
const { link } = props;
|
|
41
|
+
const description = link.description === undefined ? null : (_jsx("span", { className: frontendElementClass(block, "sheet-description"), children: link.description }));
|
|
42
|
+
return (_jsxs(SiteHeaderAnchor, { ...props, className: frontendElementClass(block, "sheet-entry"), link: link, children: [_jsx("span", { children: _jsx(SiteLinkLabel, { link: link }) }), description] }));
|
|
43
|
+
}
|
|
44
|
+
function SheetColumn(props) {
|
|
45
|
+
const headingId = `${useId().replace(/:/gu, "")}_sheet_heading`;
|
|
46
|
+
return (_jsxs("div", { "aria-labelledby": headingId, className: frontendElementClass(block, "sheet-column"), role: "group", children: [_jsx("h5", { className: frontendElementClass(block, "sheet-heading"), id: headingId, children: props.link.label }), _jsx("div", { className: `${frontendElementClass(block, "sheet-links")} ${frontendClassName("scroll-min")}`, children: siteLinkChildren(props.link).map((child, index) => _createElement(SheetEntry, { ...props, key: siteLinkKey(child, index), link: child })) })] }));
|
|
47
|
+
}
|
|
48
|
+
function SheetGrid(props) {
|
|
49
|
+
const children = siteLinkChildren(props.link);
|
|
50
|
+
const columns = children.some(isSiteLinkGroup);
|
|
51
|
+
return (_jsx("div", { className: frontendElementClass(block, "sheet-grid"), ...frontendDataAttrs({ "site-header-layout": columns ? "columns" : "list" }), children: children.map((child, index) => {
|
|
52
|
+
const key = siteLinkKey(child, index);
|
|
53
|
+
if (isSiteLinkGroup(child))
|
|
54
|
+
return _createElement(SheetColumn, { ...props, key: key, link: child });
|
|
55
|
+
return _createElement(SheetEntry, { ...props, key: key, link: child });
|
|
56
|
+
}) }));
|
|
57
|
+
}
|
|
58
|
+
function SheetSection(props) {
|
|
59
|
+
const grid = _jsx(SheetGrid, { ...props });
|
|
60
|
+
return (_jsx("div", { className: frontendElementClass(block, "sheet-section"), hidden: props.hidden, id: props.id, ...frontendDataAttrs({ "site-header-section": props.sectionKey }), children: props.link.search ? (_jsx(SiteHeaderSearch, { lang: props.lang, onNavigate: props.onNavigate, softRedirect: props.softRedirect, children: grid })) : grid }));
|
|
61
|
+
}
|
|
62
|
+
function SiteHeaderSheetPanel(props) {
|
|
63
|
+
const { links, sheet, sheetId } = props;
|
|
64
|
+
const state = useSiteLinkState(links);
|
|
65
|
+
const groups = links.map((link, index) => ({ index, link })).filter(({ link }) => isSiteLinkGroup(link));
|
|
66
|
+
if (!groups.length)
|
|
67
|
+
return null;
|
|
68
|
+
const open = Boolean(sheet.open);
|
|
69
|
+
return (_jsx("div", { "aria-hidden": !open, className: frontendElementClass(block, "sheet"), inert: !open, onPointerEnter: sheet.stay, ...frontendDataAttrs({ "site-header-sheet": open ? "open" : "closed" }), children: _jsx("div", { className: `${frontendElementClass(block, "sheet-body")} ${frontendClassName("scroll-min")}`, children: _jsx("div", { className: frontendElementClass(block, "sheet-content"), children: groups.map(({ index, link }) => (_createElement(SheetSection, { ...state, hidden: sheet.current !== String(index), id: `${sheetId}_${index}`, key: siteLinkKey(link, index), lang: props.lang, link: link, onNavigate: sheet.close, sectionKey: String(index), softRedirect: props.softRedirect }))) }) }) }));
|
|
70
|
+
}
|
|
71
|
+
function SiteHeaderChevron() {
|
|
72
|
+
return _jsx("span", { "aria-hidden": "true", className: frontendElementClass(block, "menu-group-chevron") });
|
|
73
|
+
}
|
|
74
|
+
function MenuSection(props) {
|
|
75
|
+
return (_jsxs("div", { className: frontendElementClass(block, "menu-section"), children: [_jsx("h5", { className: frontendElementClass(block, "menu-section-heading"), children: props.link.label }), _jsx("div", { className: frontendElementClass(block, "menu-section-links"), children: siteLinkChildren(props.link).map((child, index) => (_createElement(SiteHeaderAnchor, { ...props, key: siteLinkKey(child, index), link: child }))) })] }));
|
|
76
|
+
}
|
|
77
|
+
function MenuGroupLinks(props) {
|
|
78
|
+
const links = (_jsx("div", { className: frontendElementClass(block, "menu-group-links"), children: siteLinkChildren(props.link).map((child, index) => {
|
|
79
|
+
const key = siteLinkKey(child, index);
|
|
80
|
+
if (isSiteLinkGroup(child))
|
|
81
|
+
return _createElement(MenuSection, { ...props, key: key, link: child });
|
|
82
|
+
return _createElement(SiteHeaderAnchor, { ...props, key: key, link: child });
|
|
83
|
+
}) }));
|
|
84
|
+
if (!props.link.search)
|
|
85
|
+
return links;
|
|
86
|
+
return _jsx(SiteHeaderSearch, { lang: props.lang, onNavigate: props.onNavigate, softRedirect: props.softRedirect, children: links });
|
|
87
|
+
}
|
|
88
|
+
function SiteHeaderMenuGroup(props) {
|
|
89
|
+
return (_jsx(Disclosure, { className: frontendElementClass(block, "menu-group"), panel: _jsx(MenuGroupLinks, { ...props }), trigger: _jsxs(DisclosureButton, { className: frontendElementClass(block, "menu-group-label"), children: [_jsx("span", { className: frontendClassName("text-link"), children: props.link.label }), _jsx(SiteHeaderChevron, {})] }) }));
|
|
90
|
+
}
|
|
91
|
+
export { SiteHeaderAnchor, SiteHeaderMenuGroup, SiteHeaderNavTrigger, SiteHeaderSheetPanel, useSiteLinkState };
|
|
92
|
+
//# sourceMappingURL=groups.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"groups.js","sourceRoot":"","sources":["../../../../../../src/layout/components/site/header/groups.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
type SiteHeaderSearchProps = {
|
|
3
|
+
children?: ReactNode;
|
|
4
|
+
lang?: string;
|
|
5
|
+
onNavigate?: () => void;
|
|
6
|
+
softRedirect?: boolean;
|
|
7
|
+
};
|
|
8
|
+
declare function SiteHeaderSearch(props: SiteHeaderSearchProps): import("react").JSX.Element;
|
|
9
|
+
export { SiteHeaderSearch };
|
|
10
|
+
export type { SiteHeaderSearchProps };
|
|
11
|
+
//# sourceMappingURL=search.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../../../../../src/layout/components/site/header/search.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,SAAS,EAAE,MAAM,OAAO,CAAC;AAYtD,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AAsFF,iBAAS,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,+BAyCrD;AAED,OAAO,EAAE,gBAAgB,EAAE,CAAC;AAC5B,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useId, useRef, useState } from "react";
|
|
3
|
+
import { frontendClassName, frontendElementClass } from "../../../../../namespace/index.js";
|
|
4
|
+
import { normalizeLocale, sourceLanguageMessage } from "./../../../../language/messages.js";
|
|
5
|
+
import { loadSiteSearch } from "./../../../../search/site/load.js";
|
|
6
|
+
import { searchSite } from "./../../../../search/site/query.js";
|
|
7
|
+
import { SiteLinkAnchor } from "./../link.js";
|
|
8
|
+
const block = "site-header";
|
|
9
|
+
const DEBOUNCE = 90;
|
|
10
|
+
function useSiteSearch(query, locale) {
|
|
11
|
+
const [state, setState] = useState({ hits: [], status: "idle" });
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
const value = query.trim();
|
|
14
|
+
if (!value) {
|
|
15
|
+
setState({ hits: [], status: "idle" });
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
let live = true;
|
|
19
|
+
const timer = window.setTimeout(() => {
|
|
20
|
+
setState((current) => (current.status === "ready" ? current : { ...current, status: "loading" }));
|
|
21
|
+
loadSiteSearch(locale).then((pages) => live && setState({ hits: searchSite(pages, value), status: "ready" }), () => live && setState({ hits: [], status: "failed" }));
|
|
22
|
+
}, DEBOUNCE);
|
|
23
|
+
return () => {
|
|
24
|
+
live = false;
|
|
25
|
+
window.clearTimeout(timer);
|
|
26
|
+
};
|
|
27
|
+
}, [locale, query]);
|
|
28
|
+
return state;
|
|
29
|
+
}
|
|
30
|
+
function moveFocus(list, input, event) {
|
|
31
|
+
const links = [...(list?.querySelectorAll("a[href]") || [])];
|
|
32
|
+
const index = links.indexOf(document.activeElement);
|
|
33
|
+
if (event.key === "ArrowDown")
|
|
34
|
+
links[Math.min(links.length - 1, index + 1)]?.focus();
|
|
35
|
+
else if (event.key === "ArrowUp" && index <= 0)
|
|
36
|
+
input?.focus();
|
|
37
|
+
else if (event.key === "ArrowUp")
|
|
38
|
+
links[index - 1]?.focus();
|
|
39
|
+
else
|
|
40
|
+
return;
|
|
41
|
+
event.preventDefault();
|
|
42
|
+
}
|
|
43
|
+
function HitLink(props) {
|
|
44
|
+
const { hit } = props;
|
|
45
|
+
const title = hit.section && hit.section.title !== hit.title ? `${hit.title} · ${hit.section.title}` : hit.title;
|
|
46
|
+
const label = (_jsxs(_Fragment, { children: [_jsx("span", { className: frontendClassName("text-link"), children: title }), _jsx("span", { className: frontendElementClass(block, "sheet-description"), children: hit.snippet.map((part, index) => (part.mark ? _jsx("mark", { children: part.text }, index) : part.text)) })] }));
|
|
47
|
+
return (_jsx(SiteLinkAnchor, { className: frontendElementClass(block, "sheet-entry"), link: { href: hit.href, label }, onNavigate: props.onNavigate, plain: true, softRedirect: props.softRedirect }));
|
|
48
|
+
}
|
|
49
|
+
function SearchResults(props) {
|
|
50
|
+
const listRef = useRef(null);
|
|
51
|
+
const { hits, status } = props.state;
|
|
52
|
+
const say = (key) => sourceLanguageMessage(key, props.locale, { query: props.query.trim() });
|
|
53
|
+
const note = status === "failed" ? say("siteSearchFailed") : status === "ready" && !hits.length ? say("siteSearchEmpty") : "";
|
|
54
|
+
return (_jsxs("div", { "aria-live": "polite", className: frontendElementClass(block, "search-results"), children: [note ? _jsx("p", { className: frontendElementClass(block, "sheet-description"), children: note }) : null, hits.length ? (_jsx("ol", { className: frontendElementClass(block, "search-list"), onKeyDown: (event) => moveFocus(listRef.current, props.input, event), ref: listRef, children: hits.map((hit) => (_jsx("li", { children: _jsx(HitLink, { hit: hit, onNavigate: props.onNavigate, softRedirect: props.softRedirect }) }, hit.href))) })) : null] }));
|
|
55
|
+
}
|
|
56
|
+
function SiteHeaderSearch(props) {
|
|
57
|
+
const locale = normalizeLocale(props.lang || (typeof document === "undefined" ? "" : document.documentElement.lang));
|
|
58
|
+
const [query, setQuery] = useState("");
|
|
59
|
+
const inputRef = useRef(null);
|
|
60
|
+
const resultsId = `${useId().replace(/:/gu, "")}_site_search`;
|
|
61
|
+
const state = useSiteSearch(query, locale);
|
|
62
|
+
const searching = Boolean(query.trim());
|
|
63
|
+
const onKeyDown = (event) => {
|
|
64
|
+
const results = document.getElementById(resultsId);
|
|
65
|
+
if (event.key === "Escape" && query) {
|
|
66
|
+
event.stopPropagation();
|
|
67
|
+
setQuery("");
|
|
68
|
+
}
|
|
69
|
+
else if (event.key === "Enter")
|
|
70
|
+
results?.querySelector("a[href]")?.click();
|
|
71
|
+
else if (event.key === "ArrowDown")
|
|
72
|
+
moveFocus(results, inputRef.current, event);
|
|
73
|
+
};
|
|
74
|
+
const navigate = () => {
|
|
75
|
+
setQuery("");
|
|
76
|
+
props.onNavigate?.();
|
|
77
|
+
};
|
|
78
|
+
return (_jsxs("div", { className: frontendElementClass(block, "search"), children: [_jsx("input", { "aria-controls": resultsId, "aria-label": sourceLanguageMessage("siteSearchLabel", locale), autoComplete: "off", className: `${frontendClassName("input")} ${frontendElementClass(block, "search-input")}`, onChange: (event) => setQuery(event.target.value), onFocus: () => void loadSiteSearch(locale).catch(() => undefined), onKeyDown: onKeyDown, placeholder: sourceLanguageMessage("siteSearchPlaceholder", locale), ref: inputRef, spellCheck: false, type: "search", value: query }), _jsx("div", { id: resultsId, children: searching ? _jsx(SearchResults, { ...props, input: inputRef.current, locale: locale, onNavigate: navigate, query: query, state: state }) : null }), _jsx("div", { hidden: searching, children: props.children })] }));
|
|
79
|
+
}
|
|
80
|
+
export { SiteHeaderSearch };
|
|
81
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../../../../src/layout/components/site/header/search.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { RefObject } from "react";
|
|
2
|
+
type SiteHeaderSheet = {
|
|
3
|
+
close: () => void;
|
|
4
|
+
current: string;
|
|
5
|
+
hover: (key: string) => void;
|
|
6
|
+
leave: () => void;
|
|
7
|
+
open: string;
|
|
8
|
+
stay: () => void;
|
|
9
|
+
toggle: (key: string, keyboard: boolean) => void;
|
|
10
|
+
};
|
|
11
|
+
declare function useSiteHeaderSheet(headerRef: RefObject<HTMLElement | null>): SiteHeaderSheet;
|
|
12
|
+
export { useSiteHeaderSheet };
|
|
13
|
+
export type { SiteHeaderSheet };
|
|
14
|
+
//# sourceMappingURL=sheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.d.ts","sourceRoot":"","sources":["../../../../../../src/layout/components/site/header/sheet.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,KAAK,eAAe,GAAG;IACrB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;CAClD,CAAC;AA2CF,iBAAS,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,GAAC,IAAI,CAAC,GAAG,eAAe,CAiCnF;AAED,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { useCallback, useEffect, useRef, useState } from "react";
|
|
2
|
+
import { registerOverlayCloser } from "../../../../../spa/closers.js";
|
|
3
|
+
import { frontendDataSelector } from "../../../../../namespace/index.js";
|
|
4
|
+
import { SITE_HEADER_DESKTOP_QUERY } from "./state.js";
|
|
5
|
+
const CLOSE_DELAY = 180;
|
|
6
|
+
const HOVER_GRACE = 400;
|
|
7
|
+
function focusFirstLink(header, key) {
|
|
8
|
+
requestAnimationFrame(() => {
|
|
9
|
+
const section = header?.querySelector(`${frontendDataSelector("site-header-section", key)}`);
|
|
10
|
+
section?.querySelector("a[href]")?.focus({ preventScroll: true });
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function useSheetDismissal(headerRef, open, close) {
|
|
14
|
+
useEffect(() => registerOverlayCloser(close), [close]);
|
|
15
|
+
useEffect(() => {
|
|
16
|
+
const header = headerRef.current;
|
|
17
|
+
if (!open || !header)
|
|
18
|
+
return undefined;
|
|
19
|
+
const onKeyDown = (event) => {
|
|
20
|
+
if (event.key !== "Escape")
|
|
21
|
+
return;
|
|
22
|
+
const inside = header.contains(document.activeElement);
|
|
23
|
+
close();
|
|
24
|
+
if (inside)
|
|
25
|
+
header.querySelector(frontendDataSelector("site-header-trigger", open))?.focus({ preventScroll: true });
|
|
26
|
+
};
|
|
27
|
+
const onPointerDown = (event) => {
|
|
28
|
+
if (event.target instanceof Node && !header.contains(event.target))
|
|
29
|
+
close();
|
|
30
|
+
};
|
|
31
|
+
const onFocusOut = (event) => {
|
|
32
|
+
if (!(event.relatedTarget instanceof Node) || !header.contains(event.relatedTarget))
|
|
33
|
+
close();
|
|
34
|
+
};
|
|
35
|
+
const media = window.matchMedia?.(SITE_HEADER_DESKTOP_QUERY);
|
|
36
|
+
const onMedia = () => {
|
|
37
|
+
if (!media?.matches)
|
|
38
|
+
close();
|
|
39
|
+
};
|
|
40
|
+
document.addEventListener("keydown", onKeyDown);
|
|
41
|
+
document.addEventListener("pointerdown", onPointerDown);
|
|
42
|
+
header.addEventListener("focusout", onFocusOut);
|
|
43
|
+
media?.addEventListener?.("change", onMedia);
|
|
44
|
+
return () => {
|
|
45
|
+
document.removeEventListener("keydown", onKeyDown);
|
|
46
|
+
document.removeEventListener("pointerdown", onPointerDown);
|
|
47
|
+
header.removeEventListener("focusout", onFocusOut);
|
|
48
|
+
media?.removeEventListener?.("change", onMedia);
|
|
49
|
+
};
|
|
50
|
+
}, [close, headerRef, open]);
|
|
51
|
+
}
|
|
52
|
+
function useSiteHeaderSheet(headerRef) {
|
|
53
|
+
const [open, setOpen] = useState("");
|
|
54
|
+
const [current, setCurrent] = useState("");
|
|
55
|
+
const timer = useRef(0);
|
|
56
|
+
const hoveredAt = useRef(0);
|
|
57
|
+
const stay = useCallback(() => {
|
|
58
|
+
window.clearTimeout(timer.current);
|
|
59
|
+
timer.current = 0;
|
|
60
|
+
}, []);
|
|
61
|
+
const close = useCallback(() => {
|
|
62
|
+
stay();
|
|
63
|
+
setOpen("");
|
|
64
|
+
}, [stay]);
|
|
65
|
+
const hover = useCallback((key) => {
|
|
66
|
+
stay();
|
|
67
|
+
hoveredAt.current = Date.now();
|
|
68
|
+
setCurrent(key);
|
|
69
|
+
setOpen(key);
|
|
70
|
+
}, [stay]);
|
|
71
|
+
const leave = useCallback(() => {
|
|
72
|
+
stay();
|
|
73
|
+
timer.current = window.setTimeout(() => setOpen(""), CLOSE_DELAY);
|
|
74
|
+
}, [stay]);
|
|
75
|
+
const toggle = useCallback((key, keyboard) => {
|
|
76
|
+
stay();
|
|
77
|
+
const closing = open === key && Date.now() - hoveredAt.current >= HOVER_GRACE;
|
|
78
|
+
setCurrent(key);
|
|
79
|
+
setOpen(closing ? "" : key);
|
|
80
|
+
if (keyboard && !closing)
|
|
81
|
+
focusFirstLink(headerRef.current, key);
|
|
82
|
+
}, [headerRef, open, stay]);
|
|
83
|
+
useEffect(() => () => window.clearTimeout(timer.current), []);
|
|
84
|
+
useSheetDismissal(headerRef, open, close);
|
|
85
|
+
return { close, current, hover, leave, open, stay, toggle };
|
|
86
|
+
}
|
|
87
|
+
export { useSiteHeaderSheet };
|
|
88
|
+
//# sourceMappingURL=sheet.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheet.js","sourceRoot":"","sources":["../../../../../../src/layout/components/site/header/sheet.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ type SiteHeaderProps = Omit<HTMLAttributes<HTMLElement>, "children"> & {
|
|
|
13
13
|
brand: ReactNode;
|
|
14
14
|
brandHref?: false | string;
|
|
15
15
|
labels?: SiteHeaderLabels;
|
|
16
|
-
|
|
16
|
+
lang?: string;
|
|
17
17
|
menuActions?: ReactNode;
|
|
18
18
|
softRedirect?: boolean;
|
|
19
19
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../src/layout/components/site/header.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../../../../src/layout/components/site/header.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAA4B,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBjF,OAAO,EAAgC,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAIxE,KAAK,cAAc,GAAG,QAAQ,CAAC;AAE/B,KAAK,gBAAgB,GAAG;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,KAAK,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC,GAAG;IACrE,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB,CAAC;AA8IF,iBAAS,UAAU,CAAC,KAAK,EAAE,eAAe,+BAwCzC;AAED,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,gBAAgB,EAAE,cAAc,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -1,65 +1,42 @@
|
|
|
1
1
|
import { createElement as _createElement } from "react";
|
|
2
2
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import {
|
|
4
|
-
import { useEffect, useId, useSyncExternalStore } from "react";
|
|
5
|
-
import { PopoverOpenButton, PopoverPanel } from "./../../../popover/components/index.js";
|
|
3
|
+
import { useEffect, useId } from "react";
|
|
6
4
|
import { classNames } from "../../../../components/index.js";
|
|
7
5
|
import { frontendClassName, frontendDataAttrs, frontendElementClass } from "../../../../namespace/index.js";
|
|
8
6
|
import { A11Y_MAIN_ID } from "./../../../a11y/attributes.js";
|
|
9
7
|
import { useSiteHeaderMenu } from "./header/state.js";
|
|
10
8
|
import { useSiteHeaderFit } from "./header/fit.js";
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
9
|
+
import { useSiteHeaderSheet } from "./header/sheet.js";
|
|
10
|
+
import { SiteHeaderAnchor, SiteHeaderMenuGroup, SiteHeaderNavTrigger, SiteHeaderSheetPanel, useSiteLinkState, } from "./header/groups.js";
|
|
11
|
+
import { isSiteLinkGroup, siteLinkKey } from "./link.js";
|
|
12
|
+
import { resolveSiteLinks } from "./../../links.js";
|
|
13
|
+
import { useLocale } from "./../../../react/locale.js";
|
|
14
14
|
const block = "site-header";
|
|
15
15
|
function SiteHeaderSkipLink({ labels }) {
|
|
16
16
|
return (_jsx("a", { className: frontendClassName("skip-link"), href: `#${A11Y_MAIN_ID}`, children: labels?.skipToContent || "Skip to content" }));
|
|
17
17
|
}
|
|
18
|
-
function SiteHeaderAnchor(props) {
|
|
19
|
-
const { className, currentPaths, hasSection, link, section } = props;
|
|
20
|
-
return (_jsx(SiteLinkAnchor, { active: isSiteLinkActive(link, currentPaths, section, hasSection, props.currentUrl), className: className, link: link, onNavigate: props.onNavigate, plain: props.plain, softRedirect: props.softRedirect, tabIndex: props.tabIndex }));
|
|
21
|
-
}
|
|
22
|
-
function SiteHeaderNavGroup(props) {
|
|
23
|
-
const { currentPaths, hasSection, link, section } = props;
|
|
24
|
-
const panelId = `${useId().replace(/:/gu, "")}_nav_group`;
|
|
25
|
-
const active = isSiteLinkActive(link, currentPaths, section, hasSection, props.currentUrl);
|
|
26
|
-
return (_jsxs(_Fragment, { children: [_jsx(PopoverOpenButton, { "aria-current": active ? "true" : undefined, className: frontendElementClass(block, "nav-trigger"), controls: panelId, hover: true, tabIndex: props.tabIndex, children: _jsx("span", { className: frontendClassName("text-link"), children: link.label }) }), _jsx(PopoverPanel, { id: panelId, children: siteLinkChildren(link).map((child, index) => (_createElement(SiteHeaderAnchor, { ...props, plain: true, className: frontendClassName("popover-item"), key: siteLinkKey(child, index), link: child }))) })] }));
|
|
27
|
-
}
|
|
28
|
-
function SiteHeaderChevron() {
|
|
29
|
-
return (_jsx("span", { "aria-hidden": "true", className: frontendElementClass(block, "menu-group-chevron") }));
|
|
30
|
-
}
|
|
31
|
-
function SiteHeaderMenuGroup(props) {
|
|
32
|
-
return (_jsx(Disclosure, { className: frontendElementClass(block, "menu-group"), panel: _jsx("div", { className: frontendElementClass(block, "menu-group-links"), children: siteLinkChildren(props.link).map((child, index) => (_createElement(SiteHeaderAnchor, { ...props, key: siteLinkKey(child, index), link: child }))) }), trigger: _jsxs(DisclosureButton, { className: frontendElementClass(block, "menu-group-label"), children: [_jsx("span", { children: props.link.label }), _jsx(SiteHeaderChevron, {})] }) }));
|
|
33
|
-
}
|
|
34
18
|
function SiteHeaderLinks(props) {
|
|
35
|
-
const currentUrl = useRenderCurrentUrl();
|
|
36
|
-
const currentPaths = sitePathForms(currentUrl);
|
|
37
|
-
const fragments = props.links.flatMap((link) => (isSiteLinkGroup(link) ? siteLinkChildren(link) : [link]))
|
|
38
|
-
.filter((link) => siteLinkFragment(link) && siteLinkOnCurrentPage(link, currentPaths))
|
|
39
|
-
.map((link) => siteLinkFragment(link));
|
|
40
|
-
const fragmentKey = fragments.join("|");
|
|
41
|
-
useEffect(() => {
|
|
42
|
-
observeSections(fragmentKey ? fragmentKey.split("|") : []);
|
|
43
|
-
}, [fragmentKey]);
|
|
44
|
-
const section = useSyncExternalStore(subscribeActiveSection, activeSection, serverActiveSection);
|
|
45
19
|
const shared = {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
hasSection: fragments.length > 0,
|
|
20
|
+
...useSiteLinkState(props.links),
|
|
21
|
+
lang: props.lang,
|
|
49
22
|
onNavigate: props.onNavigate,
|
|
50
|
-
section,
|
|
51
23
|
softRedirect: props.softRedirect,
|
|
52
24
|
tabIndex: props.tabIndex,
|
|
53
25
|
};
|
|
26
|
+
const { sheet, sheetId } = props;
|
|
54
27
|
return (_jsx(_Fragment, { children: props.links.map((link, index) => {
|
|
55
28
|
const key = siteLinkKey(link, index);
|
|
56
29
|
if (!isSiteLinkGroup(link))
|
|
57
30
|
return _createElement(SiteHeaderAnchor, { ...shared, key: key, link: link });
|
|
58
|
-
if (
|
|
31
|
+
if (!sheet || !sheetId)
|
|
59
32
|
return _createElement(SiteHeaderMenuGroup, { ...shared, key: key, link: link });
|
|
60
|
-
return _createElement(
|
|
33
|
+
return _createElement(SiteHeaderNavTrigger, { ...shared, index: index, key: key, link: link, sheet: sheet, sheetId: sheetId });
|
|
61
34
|
}) }));
|
|
62
35
|
}
|
|
36
|
+
function closeSheetOverLink(event, close) {
|
|
37
|
+
if (event.target instanceof Element && event.target.closest("a[href]"))
|
|
38
|
+
close();
|
|
39
|
+
}
|
|
63
40
|
function closeOnLink(event, close) {
|
|
64
41
|
if (event.target instanceof Element && event.target.closest("a[href]"))
|
|
65
42
|
close();
|
|
@@ -79,16 +56,30 @@ function SiteHeaderToggle(props) {
|
|
|
79
56
|
return (_jsx("button", { "aria-controls": menuId, "aria-expanded": state.open, "aria-label": state.open ? labels?.closeMenu || "Close menu" : labels?.openMenu || "Open menu", className: frontendElementClass(block, "toggle"), onClick: state.toggle, ref: state.toggleRef, type: "button", children: _jsx(SiteHeaderBurger, {}) }));
|
|
80
57
|
}
|
|
81
58
|
function SiteHeaderMenu(props) {
|
|
82
|
-
const { actions, labels, links
|
|
83
|
-
return (_jsx("div", { "aria-hidden": !state.open, className: frontendElementClass(block, "menu"), id: menuId, inert: !state.open, children: _jsx("div", { className: frontendElementClass(block, "menu-body"), children: _jsxs("div", { className: frontendElementClass(block, "menu-content"), children: [links.length ? (_jsx("nav", { "aria-label": labels?.navigation, className: frontendElementClass(block, "menu-links"), children: _jsx(SiteHeaderLinks, {
|
|
59
|
+
const { actions, labels, links, menuActions = actions, menuId, softRedirect, state } = props;
|
|
60
|
+
return (_jsx("div", { "aria-hidden": !state.open, className: frontendElementClass(block, "menu"), id: menuId, inert: !state.open, children: _jsx("div", { className: frontendElementClass(block, "menu-body"), children: _jsxs("div", { className: frontendElementClass(block, "menu-content"), children: [links.length ? (_jsx("nav", { "aria-label": labels?.navigation, className: frontendElementClass(block, "menu-links"), children: _jsx(SiteHeaderLinks, { lang: props.lang, links: links, onNavigate: state.close, softRedirect: softRedirect }) })) : null, menuActions ? (_jsxs(_Fragment, { children: [_jsx("span", { "aria-hidden": "true", className: frontendElementClass(block, "menu-divider") }), _jsx("div", { className: frontendElementClass(block, "menu-footer"), onClick: (event) => closeOnLink(event, state.close), children: menuActions })] })) : null] }) }) }));
|
|
61
|
+
}
|
|
62
|
+
function SiteHeaderNav(props) {
|
|
63
|
+
const { sheet } = props;
|
|
64
|
+
return (_jsx("nav", { "aria-label": props.labels?.navigation, className: frontendElementClass(block, "nav"), onPointerOver: (event) => closeSheetOverLink(event, sheet.leave), children: _jsx(SiteHeaderLinks, { links: props.links, sheet: sheet, sheetId: props.sheetId, softRedirect: props.softRedirect }) }));
|
|
84
65
|
}
|
|
85
66
|
function SiteHeader(props) {
|
|
86
|
-
const { actions, brand, brandHref = "/", className, labels,
|
|
67
|
+
const { actions, brand, brandHref = "/", className, labels, lang: givenLang, menuActions, softRedirect, ...rest } = props;
|
|
68
|
+
const { locale } = useLocale();
|
|
69
|
+
const lang = givenLang || locale;
|
|
70
|
+
const links = resolveSiteLinks(lang)?.header || [];
|
|
87
71
|
const state = useSiteHeaderMenu();
|
|
88
|
-
const
|
|
72
|
+
const baseId = useId().replace(/:/gu, "");
|
|
73
|
+
const menuId = `${baseId}_site_menu`;
|
|
74
|
+
const sheetId = `${baseId}_site_sheet`;
|
|
89
75
|
const hasMenu = links.length > 0 || Boolean(menuActions);
|
|
90
76
|
const compact = useSiteHeaderFit(state.headerRef, hasMenu);
|
|
91
|
-
|
|
77
|
+
const sheet = useSiteHeaderSheet(state.headerRef);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (compact)
|
|
80
|
+
sheet.close();
|
|
81
|
+
}, [compact, sheet.close]);
|
|
82
|
+
return (_jsxs("header", { ...rest, className: classNames(frontendClassName(block), className), ...frontendDataAttrs({ "site-header": "", "site-header-open": state.open ? "true" : "false" }), ...frontendDataAttrs({ "site-header-menu": hasMenu ? "true" : "false" }), ...frontendDataAttrs({ "site-header-compact": compact ? "true" : undefined }), onPointerEnter: sheet.stay, onPointerLeave: sheet.leave, ref: state.headerRef, children: [_jsx(SiteHeaderSkipLink, { labels: labels }), _jsxs("div", { className: frontendElementClass(block, "bar"), children: [_jsx(SiteHeaderBrand, { brand: brand, brandHref: brandHref, labels: labels, softRedirect: softRedirect }), links.length ? _jsx(SiteHeaderNav, { labels: labels, links: links, sheet: sheet, sheetId: sheetId, softRedirect: softRedirect }) : null, actions ? _jsx("div", { className: frontendElementClass(block, "actions"), children: actions }) : null, hasMenu ? _jsx(SiteHeaderToggle, { ...props, menuId: menuId, state: state }) : null] }), _jsx(SiteHeaderSheetPanel, { lang: lang, links: links, sheet: sheet, sheetId: sheetId, softRedirect: softRedirect }), hasMenu ? _jsx(SiteHeaderMenu, { ...props, lang: lang, links: links, menuId: menuId, state: state }) : null] }));
|
|
92
83
|
}
|
|
93
84
|
export { SiteHeader };
|
|
94
85
|
//# sourceMappingURL=header.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../../src/layout/components/site/header.tsx"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"header.js","sourceRoot":"","sources":["../../../../../src/layout/components/site/header.tsx"],"names":[],"mappings":"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"}
|