@usace/groundwork 4.3.2 → 5.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.
Files changed (67) hide show
  1. package/dist/es/components/button.js +125 -0
  2. package/dist/es/components/buttons/popover.js +51 -0
  3. package/dist/es/components/buttons/standard-buttons.js +54 -0
  4. package/dist/es/components/data-grid/data-grid-header.js +54 -0
  5. package/dist/es/components/data-grid/data-grid-row.js +44 -0
  6. package/dist/es/components/data-grid/data-grid-selector.js +65 -0
  7. package/dist/es/components/data-grid/data-grid.js +89 -0
  8. package/dist/es/components/display/accordion.js +24 -0
  9. package/dist/es/components/display/badge.js +56 -0
  10. package/dist/es/components/display/card.js +13 -0
  11. package/dist/es/components/display/divider.js +25 -0
  12. package/dist/es/components/display/headings.js +34 -0
  13. package/dist/es/components/display/loader.js +10 -0
  14. package/dist/es/components/display/modal.js +39 -0
  15. package/dist/es/components/display/progress-bar.js +20 -0
  16. package/dist/es/components/display/skeleton.js +9 -0
  17. package/dist/es/components/display/text.js +31 -0
  18. package/dist/es/components/form/checkboxes.js +72 -0
  19. package/dist/es/components/form/dropdown.js +20 -0
  20. package/dist/es/components/form/fieldset.js +60 -0
  21. package/dist/es/components/form/input.js +55 -0
  22. package/dist/es/components/form/radio-group.js +57 -0
  23. package/dist/es/components/form/textarea.js +34 -0
  24. package/dist/es/components/hero.js +67 -0
  25. package/dist/es/components/layout/container.js +12 -0
  26. package/dist/es/components/layout/usace-box.js +18 -0
  27. package/dist/es/components/navigation/breadcrumbs.js +39 -0
  28. package/dist/es/components/navigation/link-provider.js +15 -0
  29. package/dist/es/components/navigation/link.js +15 -0
  30. package/dist/es/components/navigation/tabs.js +35 -0
  31. package/dist/es/components/profile-dropdown.js +61 -0
  32. package/dist/es/components/search.js +37 -0
  33. package/dist/es/components/table.js +101 -0
  34. package/dist/es/composite/footer/essayons.js +22 -0
  35. package/dist/es/composite/footer/footer-links.js +28 -0
  36. package/dist/es/composite/footer/index.js +147 -0
  37. package/dist/es/composite/footer/logo-banner.js +100 -0
  38. package/dist/es/composite/footer/social-links.js +55 -0
  39. package/dist/es/composite/header/index.js +91 -0
  40. package/dist/es/composite/header/navbar-links.js +71 -0
  41. package/dist/es/composite/header/overlay-links.js +68 -0
  42. package/dist/es/composite/header/usa-banner/USABanner.js +130 -0
  43. package/dist/es/composite/sidebar/index.js +102 -0
  44. package/dist/es/composite/site-wrapper/dod-warning.js +46 -0
  45. package/dist/es/composite/site-wrapper/index.js +49 -0
  46. package/dist/es/gw-merge.js +11 -0
  47. package/dist/es/hooks/useIsMobile.js +32 -0
  48. package/dist/es/hooks/useScrollFade.js +19 -0
  49. package/dist/es/img/Army-250-year-logo.js +4 -0
  50. package/dist/es/img/Magnifying_glass_icon.js +4 -0
  51. package/dist/es/img/USACE-250-year-logo.js +4 -0
  52. package/dist/es/img/armystar-logo-rb.js +4 -0
  53. package/dist/es/img/cwbi-logo.js +4 -0
  54. package/dist/es/img/essayonscrest.js +4 -0
  55. package/dist/es/img/icon-dot-gov.js +4 -0
  56. package/dist/es/img/icon-https.js +4 -0
  57. package/dist/es/img/rsgis-logo.js +4 -0
  58. package/dist/es/img/us_flag_small.js +4 -0
  59. package/dist/es/img/usace-logo-color.js +4 -0
  60. package/dist/es/index.js +37 -0
  61. package/dist/es/utils/paths.js +19 -0
  62. package/dist/es/utils/sizes.js +14 -0
  63. package/dist/groundwork.css +2 -1
  64. package/dist/groundwork.umd.cjs +1 -0
  65. package/package.json +53 -9
  66. package/dist/groundwork.es.js +0 -9434
  67. package/dist/groundwork.umd.js +0 -5
@@ -0,0 +1,61 @@
1
+ import e from "./navigation/link.js";
2
+ import { useEffect as t, useState as n } from "react";
3
+ import { jsx as r, jsxs as i } from "react/jsx-runtime";
4
+ import { Menu as a, MenuButton as o, MenuItem as s, MenuItems as c } from "@headlessui/react";
5
+ //#region lib/components/profile-dropdown.jsx
6
+ function l(e) {
7
+ let t = new TextEncoder().encode(e);
8
+ return window.crypto.subtle.digest("SHA-256", t).then((e) => Array.from(new Uint8Array(e)).map((e) => e.toString(16).padStart(2, "0")).join(""));
9
+ }
10
+ function u({ email: e }) {
11
+ let [i, a] = n("https://www.gravatar.com/avatar/unknown?d=identicon");
12
+ return t(() => {
13
+ async function t() {
14
+ let t = await l(e);
15
+ a(`https://www.gravatar.com/avatar/${t}?d=identicon`);
16
+ }
17
+ t();
18
+ }, [e]), /* @__PURE__ */ r("img", {
19
+ className: "gw:h-8 gw:w-8 gw:rounded-full",
20
+ src: i,
21
+ "aria-label": "Gravatar profile image",
22
+ alt: "Gravatar profile image"
23
+ });
24
+ }
25
+ function d({ username: t, email: n, links: l = [], showLogout: d = !1, onLogout: f }) {
26
+ let p = l.length > 0 || d;
27
+ return /* @__PURE__ */ i(a, {
28
+ as: "div",
29
+ className: "gw:relative gw:ml-4 gw:shrink-0",
30
+ children: [/* @__PURE__ */ r("div", { children: /* @__PURE__ */ i(o, {
31
+ className: "gw:relative gw:flex gw:rounded-full gw:bg-white gw:focus:gw:outline-none gw:hover:cursor-pointer",
32
+ children: [
33
+ /* @__PURE__ */ r("span", { className: "gw:absolute gw:-inset-1.gw:5" }),
34
+ /* @__PURE__ */ r("span", {
35
+ className: "gw:sr-only",
36
+ children: "Open user menu"
37
+ }),
38
+ n ? /* @__PURE__ */ r(u, { email: n }) : /* @__PURE__ */ r("strong", {
39
+ className: "gw:inline-block gw:h-8 gw:w-8 gw:rounded-full gw:overflow-hidden gw:text-nav-black gw:text-xl gw:bg-nav-gray",
40
+ children: /* @__PURE__ */ r("span", {
41
+ className: "gw:align-middle",
42
+ children: t ? t[0].toUpperCase() : "U"
43
+ })
44
+ })
45
+ ]
46
+ }) }), p ? /* @__PURE__ */ i(c, {
47
+ className: "gw:absolute gw:right-0 gw:z-10 gw:mt-2 gw:w-48 gw:origin-top-right gw:rounded-sm gw:bg-white gw:py-1 gw:shadow-lg gw:ring-1 gw:ring-black/5 gw:focus:gw:outline-none",
48
+ children: [l.map((t) => /* @__PURE__ */ r(s, { children: /* @__PURE__ */ r(e, {
49
+ href: t.href,
50
+ className: "gw:block gw:px-4 gw:py-2 gw:text-sm gw:text-gray-700 gw:hover:bg-gray-100 gw:hover:cursor-pointer",
51
+ children: t.text
52
+ }, t.id) }, t.text)), d ? /* @__PURE__ */ r(s, { children: /* @__PURE__ */ r("button", {
53
+ onClick: f,
54
+ className: "gw:block gw:w-full gw:px-4 gw:py-2 gw:text-sm gw:text-left gw:text-gray-700 gw:hover:bg-gray-100 gw:hover:cursor-pointer",
55
+ children: "Logout"
56
+ }) }) : null]
57
+ }) : null]
58
+ });
59
+ }
60
+ //#endregion
61
+ export { d as ProfileDropdown };
@@ -0,0 +1,37 @@
1
+ import e from "../img/Magnifying_glass_icon.js";
2
+ import { useState as t } from "react";
3
+ import { jsx as n } from "react/jsx-runtime";
4
+ //#region lib/components/search.jsx
5
+ function r({ value: t, onChange: r, placeholder: i = "Search", ...a }) {
6
+ return /* @__PURE__ */ n("input", {
7
+ type: "text",
8
+ placeholder: i,
9
+ value: t,
10
+ onChange: r,
11
+ ...a,
12
+ style: {
13
+ order: 2,
14
+ backgroundImage: `url("${e}")`,
15
+ backgroundSize: "13px",
16
+ backgroundRepeat: "no-repeat",
17
+ backgroundPosition: "10px center"
18
+ },
19
+ className: "gw:bg-white gw:border-gray-200 gw:border-2 gw:rounded gw:h-8 gw:m-2 gw:text-sm gw:text-black gw:w-full gw:pl-8"
20
+ });
21
+ }
22
+ function i({ accessKey: e, affiliate: i, placeholder: a, ...o }) {
23
+ let [s, c] = t([]);
24
+ return /* @__PURE__ */ n(r, {
25
+ value: s,
26
+ onChange: (e) => {
27
+ c(e.target.value);
28
+ },
29
+ onKeyUp: (t) => {
30
+ t.key === "Enter" && (window.location = `https://search.usa.gov/search?affiliate=${i}&access_key=${e}&query=${s}`), t.key === "Escape" && c("");
31
+ },
32
+ placeholder: a,
33
+ ...o
34
+ });
35
+ }
36
+ //#endregion
37
+ export { r as Search, r as default, i as SearchDotGov };
@@ -0,0 +1,101 @@
1
+ "use client";
2
+ import e from "../gw-merge.js";
3
+ import t from "./navigation/link.js";
4
+ import n from "../hooks/useScrollFade.js";
5
+ import { createContext as r, useContext as i, useState as a } from "react";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
7
+ //#region lib/components/table.jsx
8
+ var c = r({
9
+ bleed: !1,
10
+ dense: !1,
11
+ grid: !1,
12
+ striped: !1,
13
+ overflow: !1,
14
+ overflowHeight: "gw:max-h-[65vh]",
15
+ stickyHeader: !1
16
+ });
17
+ function l({ bleed: t = !1, dense: r = !1, grid: i = !1, striped: a = !1, className: l, children: u, overflow: d = !1, overflowHeight: f = "gw:max-h-[65vh]", stickyHeader: p = !1, ...m }) {
18
+ let { scrollRef: h, showFade: g } = n();
19
+ return /* @__PURE__ */ o(c.Provider, {
20
+ value: {
21
+ bleed: t,
22
+ dense: r,
23
+ grid: i,
24
+ striped: a,
25
+ overflow: d,
26
+ overflowHeight: f,
27
+ stickyHeader: p
28
+ },
29
+ children: /* @__PURE__ */ o("div", {
30
+ className: "gw:flow-root",
31
+ children: /* @__PURE__ */ s("div", {
32
+ ...m,
33
+ className: e("gw:-mx-(--gutter) gw:overflow-x-auto gw:whitespace-nowrap", "gw:relative", l),
34
+ children: [/* @__PURE__ */ o("div", {
35
+ ref: h,
36
+ className: e("gw:inline-block gw:min-w-full gw:align-middle", !t && "gw:sm:px-(--gutter)", d && "gw:overflow-y-auto", d && f && f),
37
+ children: /* @__PURE__ */ o("table", {
38
+ role: "presentation",
39
+ className: "gw:min-w-full gw:text-left gw:text-sm/6",
40
+ children: u
41
+ })
42
+ }), g && d && /* @__PURE__ */ o("div", { className: "gw:pointer-events-none gw:absolute gw:bottom-0 gw:left-0 gw:right-0 gw:h-8 gw:bg-linear-to-t gw:from-white gw:dark:from-zinc-950 gw:to-transparent" })]
43
+ })
44
+ })
45
+ });
46
+ }
47
+ function u({ className: t, ...n }) {
48
+ let { overflow: r, stickyHeader: a } = i(c);
49
+ return !r && a && console.warn("stickyHeader is set to true but overflow is not set. This will not work as expected. Please set overflow to true."), /* @__PURE__ */ o("thead", {
50
+ className: e("gw:text-zinc-500 gw:dark:text-zinc-400", t, r && a && "gw:z-10 gw:sticky gw:top-0 gw:bg-white gw:box-shadow gw:dark:bg-zinc-950/50 gw:backdrop-blur-(--backdrop-blur)"),
51
+ ...n
52
+ });
53
+ }
54
+ function d(e) {
55
+ return /* @__PURE__ */ o("tbody", { ...e });
56
+ }
57
+ var f = r({
58
+ href: void 0,
59
+ target: void 0,
60
+ title: void 0
61
+ });
62
+ function p({ href: t, target: n, title: r, className: a, children: s, ...l }) {
63
+ let { striped: u } = i(c);
64
+ return /* @__PURE__ */ o(f.Provider, {
65
+ value: {
66
+ href: t,
67
+ target: n,
68
+ title: r
69
+ },
70
+ children: /* @__PURE__ */ o("tr", {
71
+ ...l,
72
+ className: e(t && "gw:has-[[data-row-link][data-focus]]:outline gw:has-[[data-row-link][data-focus]]:-outline-offset-2 gw:has-[[data-row-link][data-focus]]:outline-blue-500 gw:dark:focus-within:bg-white/2.5", u && "gw:even:bg-zinc-950/2.5 gw:dark:even:bg-white/2.5", t && u && "gw:hover:bg-zinc-950/5 gw:dark:hover:bg-white/5", t && !u && "gw:hover:bg-zinc-950/2.5 gw:dark:hover:bg-white/2.5", a),
73
+ children: s
74
+ })
75
+ });
76
+ }
77
+ function m({ className: t, ...n }) {
78
+ let { bleed: r, grid: a } = i(c);
79
+ return /* @__PURE__ */ o("th", {
80
+ ...n,
81
+ className: e("gw:border-b gw:border-b-zinc-950/10 gw:px-4 gw:py-2 gw:font-medium gw:first:pl-(--gutter,--spacing(2)) gw:last:pr-(--gutter,--spacing(2)) gw:dark:border-b-white/10", a && "gw:border-l gw:border-l-zinc-950/5 gw:first:border-l-0 gw:dark:border-l-white/5", !r && "gw:sm:first:pl-2 gw:sm:last:pr-2", t)
82
+ });
83
+ }
84
+ function h({ className: n, children: r, ...l }) {
85
+ let { bleed: u, dense: d, grid: p, striped: m } = i(c), { href: h, target: g, title: _ } = i(f), [v, y] = a(null);
86
+ return /* @__PURE__ */ s("td", {
87
+ ref: h ? y : void 0,
88
+ ...l,
89
+ className: e("gw:relative gw:px-4 gw:first:pl-(--gutter,--spacing(2)) gw:last:pr-(--gutter,--spacing(2))", !m && "gw:border-b gw:border-zinc-950/5 gw:dark:border-white/5", p && "gw:border-l gw:border-l-zinc-950/5 gw:first:border-l-0 gw:dark:border-l-white/5", d ? "gw:py-2.5" : "gw:py-4", !u && "gw:sm:first:pl-2 gw:sm:last:pr-2", n),
90
+ children: [h && /* @__PURE__ */ o(t, {
91
+ "data-row-link": !0,
92
+ href: h,
93
+ target: g,
94
+ "aria-label": _,
95
+ tabIndex: v?.previousElementSibling === null ? 0 : -1,
96
+ className: "gw:absolute gw:inset-0 gw:focus:gw:outline-none"
97
+ }), r]
98
+ });
99
+ }
100
+ //#endregion
101
+ export { l as Table, d as TableBody, h as TableCell, u as TableHead, m as TableHeader, p as TableRow };
@@ -0,0 +1,22 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ import { jsx as n } from "react/jsx-runtime";
3
+ //#region lib/composite/footer/essayons.jsx
4
+ function r() {
5
+ let [r, i] = t(null);
6
+ return e(() => {
7
+ let e = !1;
8
+ return import("../../img/essayonscrest.js").then((t) => {
9
+ e || i(t.default);
10
+ }), () => {
11
+ e = !0;
12
+ };
13
+ }, []), r ? /* @__PURE__ */ n("img", {
14
+ "aria-label": "USACE Castle",
15
+ alt: "USACE Castle",
16
+ src: r,
17
+ className: "gw:absolute gw:bottom-[56px] gw:left-[50%] gw:h-[125px] gw:w-[112px] gw:ml-[-56px]",
18
+ role: "presentation"
19
+ }) : null;
20
+ }
21
+ //#endregion
22
+ export { r as Essayons, r as default };
@@ -0,0 +1,28 @@
1
+ import { jsx as e } from "react/jsx-runtime";
2
+ //#region lib/composite/footer/footer-links.jsx
3
+ function t({ links: t = [], columnCount: n = 2 }) {
4
+ return /* @__PURE__ */ e("ul", {
5
+ className: "gw:list-none",
6
+ style: {
7
+ columnCount: n,
8
+ columnGap: "40px",
9
+ margin: 0,
10
+ padding: "0 0 0 2px"
11
+ },
12
+ children: t.map((t, n) => {
13
+ let r = t.href.startsWith("http") ? "_blank" : "", i = t.href.startsWith("http") ? "noopener noreferrer" : "";
14
+ return /* @__PURE__ */ e("li", {
15
+ className: "gw:mb-2",
16
+ children: /* @__PURE__ */ e("a", {
17
+ href: t.href,
18
+ target: r,
19
+ rel: i,
20
+ className: "gw:hover:underline",
21
+ children: t.text
22
+ })
23
+ }, t.text + n);
24
+ })
25
+ });
26
+ }
27
+ //#endregion
28
+ export { t as FooterLinks, t as default };
@@ -0,0 +1,147 @@
1
+ import { Container as e } from "../../components/layout/container.js";
2
+ import { Text as t } from "../../components/display/text.js";
3
+ import { Essayons as n } from "./essayons.js";
4
+ import { LogoBanner as r } from "./logo-banner.js";
5
+ import { SocialLinks as i } from "./social-links.js";
6
+ import { FooterLinks as a } from "./footer-links.js";
7
+ import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
8
+ //#region lib/composite/footer/index.jsx
9
+ var l = [
10
+ {
11
+ href: "https://www.lrd.usace.army.mil/about/connect-with-us/",
12
+ text: "Contact"
13
+ },
14
+ {
15
+ href: "https://www.lrd.usace.army.mil/Careers/",
16
+ text: "Join Our Team"
17
+ },
18
+ {
19
+ href: "https://www.lrd.usace.army.mil/Wetlands-Permits/",
20
+ text: "Request a Permit (Regulatory)"
21
+ },
22
+ {
23
+ href: "https://www.lrd.usace.army.mil/FOIA/",
24
+ text: "Records Request (FOIA)"
25
+ },
26
+ {
27
+ href: "https://www.usace.army.mil/About/Offices-and-Units/Engineer-Inspector-General/",
28
+ text: "File a Complaint (IG)"
29
+ },
30
+ {
31
+ href: "https://www.lrd.usace.army.mil/Business-With-Us/",
32
+ text: "Business With Us"
33
+ },
34
+ {
35
+ href: "https://www.lrd.usace.army.mil/Equal-Employment-Opportunity/",
36
+ text: "Equal Employment Opportunity (EEO)"
37
+ },
38
+ {
39
+ href: "https://www.usace.army.mil/LinkDisclaimer.aspx",
40
+ text: "Link Disclaimer"
41
+ },
42
+ {
43
+ href: "https://www.usace.army.mil/PrivacyandSecurity.aspx",
44
+ text: "Privacy and Security"
45
+ },
46
+ {
47
+ href: "https://www.lrd.usace.army.mil/SiteMap.aspx",
48
+ text: "Site Map"
49
+ }
50
+ ], u = [
51
+ {
52
+ href: "https://dodcio.defense.gov/DoDSection508/Std_Stmt.aspx",
53
+ text: "Accessibility (Section 508)"
54
+ },
55
+ {
56
+ href: "http://www.esd.whs.mil/DD/plainlanguage",
57
+ text: "Plain Writing Act"
58
+ },
59
+ {
60
+ href: "https://prhome.defense.gov/nofear",
61
+ text: "No FEAR Act"
62
+ },
63
+ {
64
+ href: "https://open.defense.gov/",
65
+ text: "Open Government"
66
+ },
67
+ {
68
+ href: "https://business.defense.gov/",
69
+ text: "Small Business Act"
70
+ },
71
+ {
72
+ href: "https://www.inscom.army.mil/isalute/",
73
+ text: "Report Suspicious Activity"
74
+ },
75
+ {
76
+ href: "https://www.usa.gov",
77
+ text: "Find Government Services (USA.gov)"
78
+ }
79
+ ];
80
+ function d({ fluidNav: d, missionText: f, aboutText: p, facebookUrl: m, twitterUrl: h, youtubeUrl: g, flickrUrl: _, instagramUrl: v, linkedInUrl: y, usaceLinks: b = l, externalLinks: x = u, armyLogo: S, army250Logo: C, usaceLogo: w, usace250Logo: T, rsgisLogo: E, cwbiLogo: D }) {
81
+ return /* @__PURE__ */ c("footer", {
82
+ className: "gw:relative gw:text-footer-light-gray gw:text-sm gw:bg-footer-black gw:border-t-gray-600 gw:border-t-4 gw:pb-[128px]",
83
+ children: [/* @__PURE__ */ s(n, {}), /* @__PURE__ */ c("div", {
84
+ className: "gw:bg-footer-gray gw:pt-8 gw:pb-16",
85
+ children: [/* @__PURE__ */ s(e, {
86
+ fluid: d,
87
+ children: /* @__PURE__ */ c("div", {
88
+ className: "gw:grid gw:grid-cols-12 gw:gap-2 gw:lg:gap-10",
89
+ children: [
90
+ /* @__PURE__ */ s("div", {
91
+ className: "gw:col-span-12 gw:lg:col-span-6",
92
+ children: /* @__PURE__ */ c("div", {
93
+ className: "gw:grid gw:grid-cols-12 gw:gap-2",
94
+ children: [/* @__PURE__ */ s("div", {
95
+ className: "gw:col-span-12 gw:lg:col-span-12",
96
+ children: f && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("h2", {
97
+ className: "gw:text-lg",
98
+ children: "Our Mission"
99
+ }), /* @__PURE__ */ s(t, {
100
+ className: "gw:text-gray-300 dark:gw:text-gray-200",
101
+ children: f
102
+ })] })
103
+ }), /* @__PURE__ */ s("div", {
104
+ className: "gw:col-span-12 gw:mt-4",
105
+ children: p && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("h2", {
106
+ className: "gw:text-lg",
107
+ children: "About this Website"
108
+ }), /* @__PURE__ */ s(t, {
109
+ className: "gw:text-gray-300 dark:gw:text-gray-200",
110
+ children: p
111
+ })] })
112
+ })]
113
+ })
114
+ }),
115
+ /* @__PURE__ */ c("div", {
116
+ className: "gw:col-span-12 gw:mt-8 gw:lg:mt-2 gw:md:col-span-4",
117
+ children: [/* @__PURE__ */ s(i, {
118
+ facebook: m,
119
+ twitter: h,
120
+ youtube: g,
121
+ flickr: _,
122
+ instagram: v,
123
+ linkedIn: y
124
+ }), /* @__PURE__ */ s(a, { links: b })]
125
+ }),
126
+ /* @__PURE__ */ s("div", {
127
+ className: "gw:col-span-8 gw:md:mt-20 gw:lg:mt-14 gw:md:col-span-2",
128
+ children: /* @__PURE__ */ s(a, {
129
+ links: x,
130
+ columnCount: 1
131
+ })
132
+ })
133
+ ]
134
+ })
135
+ }), /* @__PURE__ */ s(r, {
136
+ army: S,
137
+ army250: C,
138
+ usace: w,
139
+ usace250: T,
140
+ rsgis: E,
141
+ cwbi: D
142
+ })]
143
+ })]
144
+ });
145
+ }
146
+ //#endregion
147
+ export { d as Footer, d as default };
@@ -0,0 +1,100 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ import { jsx as n, jsxs as r } from "react/jsx-runtime";
3
+ //#region lib/composite/footer/logo-banner.jsx
4
+ var i = {
5
+ army: () => import("../../img/armystar-logo-rb.js"),
6
+ army250: () => import("../../img/Army-250-year-logo.js"),
7
+ usace: () => import("../../img/usace-logo-color.js"),
8
+ usace250: () => import("../../img/USACE-250-year-logo.js"),
9
+ rsgis: () => import("../../img/rsgis-logo.js"),
10
+ cwbi: () => import("../../img/cwbi-logo.js")
11
+ };
12
+ function a({ loader: r, ...i }) {
13
+ let [a, o] = t(null);
14
+ return e(() => {
15
+ let e = !1;
16
+ return r().then((t) => {
17
+ e || o(t.default);
18
+ }), () => {
19
+ e = !0;
20
+ };
21
+ }, [r]), a ? /* @__PURE__ */ n("img", {
22
+ src: a,
23
+ ...i
24
+ }) : null;
25
+ }
26
+ function o({ army: e, army250: t, usace: o, usace250: s, rsgis: c, cwbi: l }) {
27
+ return /* @__PURE__ */ r("div", {
28
+ className: "gw:flex gw:flex-row gw:justify-center gw:align-middle gw:gap-6 gw:mb-4 gw:mt-4",
29
+ children: [
30
+ e && /* @__PURE__ */ n("a", {
31
+ href: "https://www.army.mil",
32
+ target: "_blank",
33
+ rel: "noopener",
34
+ children: /* @__PURE__ */ n(a, {
35
+ loader: i.army,
36
+ "aria-label": "U.S. Army Logo",
37
+ alt: "U.S. Army",
38
+ className: "gw:max-h-[75px]"
39
+ })
40
+ }),
41
+ t && /* @__PURE__ */ n("a", {
42
+ href: "https://www.army.mil",
43
+ target: "_blank",
44
+ rel: "noopener",
45
+ children: /* @__PURE__ */ n(a, {
46
+ loader: i.army250,
47
+ "aria-label": "U.S. Army 250 Year Anniversary Logo",
48
+ alt: "U.S. Army",
49
+ className: "gw:max-h-[75px]"
50
+ })
51
+ }),
52
+ o && /* @__PURE__ */ n("a", {
53
+ href: "https://www.usace.army.mil",
54
+ target: "_blank",
55
+ rel: "noopener",
56
+ children: /* @__PURE__ */ n(a, {
57
+ loader: i.usace,
58
+ "aria-label": "U.S. Army Corps of Engineers",
59
+ alt: "U.S. Army Corps of Engineers",
60
+ className: "gw:max-h-[75px] gw:h-[75px] gw:w-auto"
61
+ })
62
+ }),
63
+ s && /* @__PURE__ */ n("a", {
64
+ href: "https://www.usace.army.mil",
65
+ target: "_blank",
66
+ rel: "noopener",
67
+ children: /* @__PURE__ */ n(a, {
68
+ loader: i.usace250,
69
+ "aria-label": "U.S. Army Corps of Engineers",
70
+ alt: "U.S. Army Corps of Engineers",
71
+ className: "gw:max-h-[75px] gw:h-[75px] gw:w-auto"
72
+ })
73
+ }),
74
+ c && /* @__PURE__ */ n("a", {
75
+ href: "https://www.erdc.usace.army.mil/Media/Fact-Sheets/Fact-Sheet-Article-View/article/476649/remote-sensinggeographic-information-systems-center/",
76
+ target: "_blank",
77
+ rel: "noopener",
78
+ children: /* @__PURE__ */ n(a, {
79
+ loader: i.rsgis,
80
+ "aria-label": "Remote Sensing - GIS Center of Expertise Logo",
81
+ alt: "Remote Sensing - GIS Center of Expertise",
82
+ className: "gw:max-h-[75px]"
83
+ })
84
+ }),
85
+ l && /* @__PURE__ */ n("a", {
86
+ href: "https://cwbi.sec.usace.army.mil",
87
+ target: "_blank",
88
+ rel: "noopener",
89
+ children: /* @__PURE__ */ n(a, {
90
+ loader: i.cwbi,
91
+ "aria-label": "Civil Works Business Intelligence Logo",
92
+ alt: "Civil Works Business Intelligence",
93
+ className: "gw:max-h-[75px]"
94
+ })
95
+ })
96
+ ]
97
+ });
98
+ }
99
+ //#endregion
100
+ export { o as LogoBanner, o as default };
@@ -0,0 +1,55 @@
1
+ import { jsx as e, jsxs as t } from "react/jsx-runtime";
2
+ import { FaFacebook as n, FaFlickr as r, FaInstagram as i, FaLinkedin as a, FaYoutube as o } from "react-icons/fa";
3
+ import { FaXTwitter as s } from "react-icons/fa6";
4
+ //#region lib/composite/footer/social-links.jsx
5
+ function c({ facebook: c, twitter: l, youtube: u, flickr: d, instagram: f, linkedIn: p }) {
6
+ return /* @__PURE__ */ t("ul", {
7
+ className: "gw:text-2xl gw:flex gw:flex-row gw:flex-wrap gw:gap-2 gw:list-none gw:mb-6",
8
+ children: [
9
+ c && /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("a", {
10
+ href: c,
11
+ target: "_blank",
12
+ rel: "noopener noreferrer",
13
+ title: "Facebook",
14
+ children: /* @__PURE__ */ e(n, {})
15
+ }) }),
16
+ l && /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("a", {
17
+ href: l,
18
+ target: "_blank",
19
+ rel: "noopener noreferrer",
20
+ title: "Twitter",
21
+ children: /* @__PURE__ */ e(s, {})
22
+ }) }),
23
+ u && /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("a", {
24
+ href: u,
25
+ target: "_blank",
26
+ rel: "noopener noreferrer",
27
+ title: "YouTube",
28
+ children: /* @__PURE__ */ e(o, {})
29
+ }) }),
30
+ d && /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("a", {
31
+ href: d,
32
+ target: "_blank",
33
+ rel: "noopener noreferrer",
34
+ title: "Flickr",
35
+ children: /* @__PURE__ */ e(r, {})
36
+ }) }),
37
+ f && /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("a", {
38
+ href: f,
39
+ target: "_blank",
40
+ rel: "noopener noreferrer",
41
+ title: "Instagram",
42
+ children: /* @__PURE__ */ e(i, {})
43
+ }) }),
44
+ p && /* @__PURE__ */ e("li", { children: /* @__PURE__ */ e("a", {
45
+ href: p,
46
+ target: "_blank",
47
+ rel: "noopener noreferrer",
48
+ title: "LinkedIn",
49
+ children: /* @__PURE__ */ e(a, {})
50
+ }) })
51
+ ]
52
+ });
53
+ }
54
+ //#endregion
55
+ export { c as SocialLinks, c as default };
@@ -0,0 +1,91 @@
1
+ import e from "../../gw-merge.js";
2
+ import t from "../../components/navigation/link.js";
3
+ import { NavbarLinks as n } from "./navbar-links.js";
4
+ import { Button as r } from "../../components/button.js";
5
+ import { OverlayLinks as i } from "./overlay-links.js";
6
+ import a from "../../img/usace-logo-color.js";
7
+ import { useState as o } from "react";
8
+ import { Fragment as s, jsx as c, jsxs as l } from "react/jsx-runtime";
9
+ import { GiHamburgerMenu as u } from "react-icons/gi";
10
+ //#region lib/composite/header/index.jsx
11
+ function d({ title: e = "", subtitle: t = "" }) {
12
+ return /* @__PURE__ */ l("div", {
13
+ style: { order: 2 },
14
+ className: "gw:w-full gw:text-white gw:sm:text-usace-black",
15
+ children: [/* @__PURE__ */ c("strong", {
16
+ className: "gw:font-normal gw:sm:font-bold gw:text-lg gw:sm:text-sm gw:leading-4 gw:sm:leading-normal gw:block gw:sm:inline gw:mr-1",
17
+ children: e
18
+ }), /* @__PURE__ */ c("span", {
19
+ className: "gw:text-md gw:sm:text-sm gw:mt-2 gw:sm:mt-0 gw:font-thin gw:sm:font-normal gw:block gw:sm:inline",
20
+ children: t
21
+ })]
22
+ });
23
+ }
24
+ function f({ homeUrl: e }) {
25
+ return /* @__PURE__ */ l("div", {
26
+ className: "gw:relative gw:w-[70px] gw:sm:w-[82px] gw:shrink-0 gw:sm:top-3",
27
+ children: [/* @__PURE__ */ c(t, {
28
+ href: e,
29
+ children: /* @__PURE__ */ c("img", {
30
+ className: "gw:w-[50px] gw:sm:w-[60px] gw:h-auto",
31
+ src: a,
32
+ alt: "U.S. Army Corps of Engineers",
33
+ "aria-label": "Visit the homepage of this site"
34
+ })
35
+ }), /* @__PURE__ */ c("div", {
36
+ className: "gw:absolute gw:left-[55px] gw:sm:left-[65px] gw:bottom-[-10px] gw:sm:bottom-[-9px] gw:text-sm gw:text-gray-400",
37
+ children: "®"
38
+ })]
39
+ });
40
+ }
41
+ function p({ links: t, title: a, subtitle: p, navRight: m, fluidNav: h, homeUrl: g }) {
42
+ let [_, v] = o(!1), y = e("gw:w-full gw:mx-auto gw:px-4 gw:box-border", h ? "gw:max-w-screen" : "gw:max-w-(--gw:breakpoint-2xl)");
43
+ return /* @__PURE__ */ l(s, { children: [/* @__PURE__ */ c("header", {
44
+ className: "gw:flex gw:flex-col gw:w-full gw:sticky gw:top-0 gw:z-20",
45
+ children: /* @__PURE__ */ l("div", { children: [/* @__PURE__ */ c("div", {
46
+ className: "gw:min-h-12 gw:bg-nav-black gw:text-white",
47
+ children: /* @__PURE__ */ c("div", {
48
+ className: y,
49
+ children: /* @__PURE__ */ l("div", {
50
+ className: "gw:flex gw:justify-between gw:items-center",
51
+ children: [
52
+ /* @__PURE__ */ c(f, { homeUrl: g }),
53
+ /* @__PURE__ */ c(n, { links: t }),
54
+ /* @__PURE__ */ c("span", {
55
+ className: "gw:flex gw:flex-row-reverse gw:justify-end gw:items-center gw:w-full gw:md:max-w-[300px] gw:mr-2",
56
+ children: m || null
57
+ }),
58
+ /* @__PURE__ */ c(r, {
59
+ style: "plain",
60
+ color: "white",
61
+ className: "gw:md:hidden",
62
+ onClick: () => {
63
+ v(!0);
64
+ },
65
+ children: /* @__PURE__ */ c(u, {})
66
+ })
67
+ ]
68
+ })
69
+ })
70
+ }), /* @__PURE__ */ c("div", {
71
+ className: "gw:min-h-4 gw:py-2 gw:sm:py-0 gw:bg-nav-dark-gray gw:sm:bg-nav-gray",
72
+ children: /* @__PURE__ */ c("div", {
73
+ className: y,
74
+ children: /* @__PURE__ */ l("div", {
75
+ className: "gw:flex gw:justify-between gw:items-center",
76
+ children: [/* @__PURE__ */ c("span", { className: "gw:sm:w-[94px] gw:shrink-0 " }), /* @__PURE__ */ c(d, {
77
+ title: a,
78
+ subtitle: p
79
+ })]
80
+ })
81
+ })
82
+ })] })
83
+ }), _ ? /* @__PURE__ */ c(i, {
84
+ links: t,
85
+ onClose: () => {
86
+ v(!1);
87
+ }
88
+ }) : null] });
89
+ }
90
+ //#endregion
91
+ export { p as Header, p as default };