@usace/groundwork 4.3.2 → 5.0.1
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/dist/es/components/button.js +125 -0
- package/dist/es/components/buttons/popover.js +51 -0
- package/dist/es/components/buttons/standard-buttons.js +54 -0
- package/dist/es/components/data-grid/data-grid-header.js +54 -0
- package/dist/es/components/data-grid/data-grid-row.js +44 -0
- package/dist/es/components/data-grid/data-grid-selector.js +65 -0
- package/dist/es/components/data-grid/data-grid.js +89 -0
- package/dist/es/components/display/accordion.js +24 -0
- package/dist/es/components/display/badge.js +56 -0
- package/dist/es/components/display/card.js +13 -0
- package/dist/es/components/display/divider.js +25 -0
- package/dist/es/components/display/headings.js +34 -0
- package/dist/es/components/display/loader.js +10 -0
- package/dist/es/components/display/modal.js +39 -0
- package/dist/es/components/display/progress-bar.js +20 -0
- package/dist/es/components/display/skeleton.js +9 -0
- package/dist/es/components/display/text.js +31 -0
- package/dist/es/components/form/checkboxes.js +72 -0
- package/dist/es/components/form/dropdown.js +20 -0
- package/dist/es/components/form/fieldset.js +60 -0
- package/dist/es/components/form/input.js +55 -0
- package/dist/es/components/form/radio-group.js +57 -0
- package/dist/es/components/form/textarea.js +34 -0
- package/dist/es/components/hero.js +67 -0
- package/dist/es/components/layout/container.js +12 -0
- package/dist/es/components/layout/usace-box.js +18 -0
- package/dist/es/components/navigation/breadcrumbs.js +39 -0
- package/dist/es/components/navigation/link-provider.js +15 -0
- package/dist/es/components/navigation/link.js +15 -0
- package/dist/es/components/navigation/tabs.js +35 -0
- package/dist/es/components/profile-dropdown.js +61 -0
- package/dist/es/components/search.js +37 -0
- package/dist/es/components/table.js +101 -0
- package/dist/es/composite/footer/essayons.js +22 -0
- package/dist/es/composite/footer/footer-links.js +28 -0
- package/dist/es/composite/footer/index.js +147 -0
- package/dist/es/composite/footer/logo-banner.js +100 -0
- package/dist/es/composite/footer/social-links.js +55 -0
- package/dist/es/composite/header/index.js +91 -0
- package/dist/es/composite/header/navbar-links.js +71 -0
- package/dist/es/composite/header/overlay-links.js +68 -0
- package/dist/es/composite/header/usa-banner/USABanner.js +130 -0
- package/dist/es/composite/sidebar/index.js +102 -0
- package/dist/es/composite/site-wrapper/dod-warning.js +46 -0
- package/dist/es/composite/site-wrapper/index.js +49 -0
- package/dist/es/gw-merge.js +11 -0
- package/dist/es/hooks/useIsMobile.js +32 -0
- package/dist/es/hooks/useScrollFade.js +19 -0
- package/dist/es/img/Army-250-year-logo.js +4 -0
- package/dist/es/img/Magnifying_glass_icon.js +4 -0
- package/dist/es/img/USACE-250-year-logo.js +4 -0
- package/dist/es/img/armystar-logo-rb.js +4 -0
- package/dist/es/img/cwbi-logo.js +4 -0
- package/dist/es/img/essayonscrest.js +4 -0
- package/dist/es/img/icon-dot-gov.js +4 -0
- package/dist/es/img/icon-https.js +4 -0
- package/dist/es/img/rsgis-logo.js +4 -0
- package/dist/es/img/us_flag_small.js +4 -0
- package/dist/es/img/usace-logo-color.js +4 -0
- package/dist/es/index.js +37 -0
- package/dist/es/utils/paths.js +19 -0
- package/dist/es/utils/sizes.js +14 -0
- package/dist/groundwork.css +2 -1
- package/dist/groundwork.umd.cjs +1 -0
- package/package.json +53 -9
- package/dist/groundwork.es.js +0 -9434
- 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 };
|