@usace/groundwork 1.0.1 → 1.0.3
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/groundwork.es.js +5131 -0
- package/dist/groundwork.umd.js +30 -0
- package/dist/style.css +1 -0
- package/package.json +17 -3
- package/.eslintrc.cjs +0 -18
- package/.github/workflows/deploy-docs.yml +0 -59
- package/.github/workflows/publish.yml +0 -19
- package/index.html +0 -13
- package/lib/catalyst/alert.jsx +0 -110
- package/lib/catalyst/avatar.jsx +0 -64
- package/lib/catalyst/badge.jsx +0 -72
- package/lib/catalyst/checkbox.jsx +0 -160
- package/lib/catalyst/dialog.jsx +0 -101
- package/lib/catalyst/dropdown.jsx +0 -202
- package/lib/catalyst/fieldset.jsx +0 -87
- package/lib/catalyst/input.jsx +0 -78
- package/lib/catalyst/listbox.jsx +0 -195
- package/lib/catalyst/pagination.jsx +0 -75
- package/lib/catalyst/radio.jsx +0 -144
- package/lib/catalyst/select.jsx +0 -78
- package/lib/catalyst/switch.jsx +0 -203
- package/lib/catalyst/textarea.jsx +0 -59
- package/lib/components/breadcrumbs.jsx +0 -46
- package/lib/components/button.jsx +0 -219
- package/lib/components/display/headings.jsx +0 -39
- package/lib/components/display/text.jsx +0 -48
- package/lib/components/hero.jsx +0 -51
- package/lib/components/layout/container.jsx +0 -13
- package/lib/components/layout/usace-box.jsx +0 -26
- package/lib/components/link.jsx +0 -18
- package/lib/components/table.jsx +0 -146
- package/lib/composite/footer/essayons.jsx +0 -12
- package/lib/composite/footer/footer-links.jsx +0 -33
- package/lib/composite/footer/index.jsx +0 -148
- package/lib/composite/footer/logo-banner.jsx +0 -55
- package/lib/composite/footer/social-links.jsx +0 -60
- package/lib/composite/header/index.jsx +0 -83
- package/lib/composite/header/navbar-links.jsx +0 -113
- package/lib/composite/header/usa-banner/USABanner.jsx +0 -114
- package/lib/composite/header/usa-banner/usa-banner.css +0 -220
- package/lib/composite/site-wrapper/index.jsx +0 -52
- package/lib/index.jsx +0 -19
- package/postcss.config.js +0 -6
- package/public/Magnifying_glass_icon.svg +0 -5
- package/public/armystar-logo-rb.svg +0 -4
- package/public/cwbi-logo.png +0 -0
- package/public/essayonscrest.png +0 -0
- package/public/icon-dot-gov.svg +0 -1
- package/public/icon-https.svg +0 -1
- package/public/nww-lucky-peak-dam.jpg +0 -0
- package/public/rsgis-logo.png +0 -0
- package/public/us_flag_small.png +0 -0
- package/public/usace-logo-color.svg +0 -1
- package/src/App.jsx +0 -38
- package/src/app-bundles/index.js +0 -4
- package/src/app-bundles/route-bundle.js +0 -36
- package/src/app-components/code-example.jsx +0 -17
- package/src/app-components/copy-button.jsx +0 -32
- package/src/app-components/props-table.jsx +0 -43
- package/src/app-components/sub-site-banner.jsx +0 -15
- package/src/app-pages/documentation/_docs-page.jsx +0 -31
- package/src/app-pages/documentation/_docs-sidebar.jsx +0 -111
- package/src/app-pages/documentation/_template.jsx +0 -55
- package/src/app-pages/documentation/app-shell/index.jsx +0 -39
- package/src/app-pages/documentation/app-shell/site-wrapper.jsx +0 -190
- package/src/app-pages/documentation/buttons/index.jsx +0 -170
- package/src/app-pages/documentation/index.jsx +0 -57
- package/src/app-pages/documentation/layout/container.jsx +0 -68
- package/src/app-pages/documentation/layout/index.jsx +0 -52
- package/src/app-pages/documentation/layout/usace-box.jsx +0 -76
- package/src/app-pages/documentation/navigation/breadcrumbs.jsx +0 -119
- package/src/app-pages/documentation/navigation/index.jsx +0 -31
- package/src/app-pages/documentation/types/index.jsx +0 -31
- package/src/app-pages/documentation/types/link.jsx +0 -72
- package/src/app-pages/home.jsx +0 -71
- package/src/index.css +0 -3
- package/src/main.jsx +0 -18
- package/tailwind.config.js +0 -31
- package/vite.config.js +0 -46
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import Container from "../../components/layout/container";
|
|
2
|
-
import { Text } from "../../components/display/text";
|
|
3
|
-
import Essayons from "./essayons";
|
|
4
|
-
import LogoBanner from "./logo-banner";
|
|
5
|
-
import SocialLinks from "./social-links";
|
|
6
|
-
import FooterLinks from "./footer-links";
|
|
7
|
-
|
|
8
|
-
const defaultLinks = [
|
|
9
|
-
{
|
|
10
|
-
href: "https://www.lrd.usace.army.mil/about/connect-with-us/",
|
|
11
|
-
text: "Contact",
|
|
12
|
-
},
|
|
13
|
-
{
|
|
14
|
-
href: "https://www.lrd.usace.army.mil/Careers/",
|
|
15
|
-
text: "Join Our Team",
|
|
16
|
-
},
|
|
17
|
-
{
|
|
18
|
-
href: "https://www.lrd.usace.army.mil/Wetlands-Permits/",
|
|
19
|
-
text: "Request a Permit (Regulatory)",
|
|
20
|
-
},
|
|
21
|
-
{
|
|
22
|
-
href: "https://www.lrd.usace.army.mil/FOIA/",
|
|
23
|
-
text: "Records Request (FOIA)",
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
href: "https://www.usace.army.mil/About/Offices-and-Units/Engineer-Inspector-General/",
|
|
27
|
-
text: "File a Complaint (IG)",
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
href: "https://www.lrd.usace.army.mil/Business-With-Us/",
|
|
31
|
-
text: "Business With Us",
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
href: "https://www.lrd.usace.army.mil/Equal-Employment-Opportunity/",
|
|
35
|
-
text: "Equal Employment Opportunity (EEO)",
|
|
36
|
-
},
|
|
37
|
-
{
|
|
38
|
-
href: "https://www.usace.army.mil/LinkDisclaimer.aspx",
|
|
39
|
-
text: "Link Disclaimer",
|
|
40
|
-
},
|
|
41
|
-
{
|
|
42
|
-
href: "https://www.usace.army.mil/PrivacyandSecurity.aspx",
|
|
43
|
-
text: "Privacy and Security",
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
href: "https://www.lrd.usace.army.mil/SiteMap.aspx",
|
|
47
|
-
text: "Site Map",
|
|
48
|
-
},
|
|
49
|
-
];
|
|
50
|
-
|
|
51
|
-
const defaultOffsiteLinks = [
|
|
52
|
-
{
|
|
53
|
-
href: "https://dodcio.defense.gov/DoDSection508/Std_Stmt.aspx",
|
|
54
|
-
text: "Accessibility (Section 508)",
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
href: "http://www.esd.whs.mil/DD/plainlanguage",
|
|
58
|
-
text: "Plain Writing Act",
|
|
59
|
-
},
|
|
60
|
-
{
|
|
61
|
-
href: "https://prhome.defense.gov/nofear",
|
|
62
|
-
text: "No FEAR Act",
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
href: "https://open.defense.gov/",
|
|
66
|
-
text: "Open Government",
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
href: "https://business.defense.gov/",
|
|
70
|
-
text: "Small Business Act",
|
|
71
|
-
},
|
|
72
|
-
{
|
|
73
|
-
href: "https://www.inscom.army.mil/isalute/",
|
|
74
|
-
text: "Report Suspicious Activity",
|
|
75
|
-
},
|
|
76
|
-
{
|
|
77
|
-
href: "https://www.usa.gov",
|
|
78
|
-
text: "Find Government Services (USA.gov)",
|
|
79
|
-
},
|
|
80
|
-
];
|
|
81
|
-
|
|
82
|
-
function Footer({
|
|
83
|
-
missionText,
|
|
84
|
-
aboutText,
|
|
85
|
-
facebookUrl,
|
|
86
|
-
twitterUrl,
|
|
87
|
-
youtubeUrl,
|
|
88
|
-
flickrUrl,
|
|
89
|
-
usaceLinks,
|
|
90
|
-
externalLinks,
|
|
91
|
-
armyLogo,
|
|
92
|
-
usaceLogo,
|
|
93
|
-
rsgisLogo,
|
|
94
|
-
cwbiLogo,
|
|
95
|
-
}) {
|
|
96
|
-
return (
|
|
97
|
-
<footer className="relative text-footer-light-gray text-sm bg-footer-black border-t-gray-600 border-t-4 pb-[128px]">
|
|
98
|
-
<Essayons />
|
|
99
|
-
<div className="bg-footer-gray pt-8 pb-16">
|
|
100
|
-
<Container fluid>
|
|
101
|
-
<div className="grid grid-cols-12 gap-2">
|
|
102
|
-
<div className="col-span-12 lg:col-span-6">
|
|
103
|
-
<div className="grid grid-cols-12 gap-2">
|
|
104
|
-
<div className="col-span-6 lg:col-span-12">
|
|
105
|
-
{missionText && (
|
|
106
|
-
<>
|
|
107
|
-
<h2 className="text-lg">Our Mission</h2>
|
|
108
|
-
<Text>{missionText}</Text>
|
|
109
|
-
</>
|
|
110
|
-
)}
|
|
111
|
-
</div>
|
|
112
|
-
<div className="col-span-6 lg:col-span-12">
|
|
113
|
-
{aboutText && (
|
|
114
|
-
<>
|
|
115
|
-
<h2 className="text-lg">About this Website</h2>
|
|
116
|
-
<Text>{aboutText}</Text>
|
|
117
|
-
</>
|
|
118
|
-
)}
|
|
119
|
-
</div>
|
|
120
|
-
</div>
|
|
121
|
-
</div>
|
|
122
|
-
<div className="col-span-8 mt-8 lg:mt-2 lg:col-span-4">
|
|
123
|
-
<SocialLinks
|
|
124
|
-
facebook={facebookUrl}
|
|
125
|
-
twitter={twitterUrl}
|
|
126
|
-
youtube={youtubeUrl}
|
|
127
|
-
flickr={flickrUrl}
|
|
128
|
-
/>
|
|
129
|
-
<FooterLinks links={usaceLinks} />
|
|
130
|
-
</div>
|
|
131
|
-
<div className="col-span-4 mt-[66px] lg:mt-2 lg:col-span-2">
|
|
132
|
-
<FooterLinks links={externalLinks} columnCount={1} />
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
</Container>
|
|
136
|
-
<LogoBanner
|
|
137
|
-
army={armyLogo}
|
|
138
|
-
usace={usaceLogo}
|
|
139
|
-
rsgis={rsgisLogo}
|
|
140
|
-
cwbi={cwbiLogo}
|
|
141
|
-
/>
|
|
142
|
-
</div>
|
|
143
|
-
</footer>
|
|
144
|
-
);
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
export default Footer;
|
|
148
|
-
export { Footer };
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
const base = import.meta.env.BASE_URL;
|
|
2
|
-
|
|
3
|
-
function LogoBanner({ army, usace, rsgis, cwbi }) {
|
|
4
|
-
return (
|
|
5
|
-
<div className="flex flex-row justify-center align-middle gap-6 mb-4">
|
|
6
|
-
{army && (
|
|
7
|
-
<a href="https://www.army.mil" target="_blank" rel="noopener">
|
|
8
|
-
<img
|
|
9
|
-
src={`${base}armystar-logo-rb.svg`}
|
|
10
|
-
alt="U.S. Army"
|
|
11
|
-
className="max-h-[75px]"
|
|
12
|
-
/>
|
|
13
|
-
</a>
|
|
14
|
-
)}
|
|
15
|
-
{usace && (
|
|
16
|
-
<a href="https://www.usace.army.mil" target="_blank" rel="noopener">
|
|
17
|
-
<img
|
|
18
|
-
src={`${base}usace-logo-color.svg`}
|
|
19
|
-
alt="U.S. Army Corps of Engineers"
|
|
20
|
-
className="max-h-[75px] h-[75px] w-auto"
|
|
21
|
-
/>
|
|
22
|
-
</a>
|
|
23
|
-
)}
|
|
24
|
-
{rsgis && (
|
|
25
|
-
<a
|
|
26
|
-
href="https://www.erdc.usace.army.mil/Media/Fact-Sheets/Fact-Sheet-Article-View/article/476649/remote-sensinggeographic-information-systems-center/"
|
|
27
|
-
target="_blank"
|
|
28
|
-
rel="noopener"
|
|
29
|
-
>
|
|
30
|
-
<img
|
|
31
|
-
src={`${base}rsgis-logo.png`}
|
|
32
|
-
alt="Remote Sensing - GIS Center of Expertise"
|
|
33
|
-
className="max-h-[75px]"
|
|
34
|
-
/>
|
|
35
|
-
</a>
|
|
36
|
-
)}
|
|
37
|
-
{cwbi && (
|
|
38
|
-
<a
|
|
39
|
-
href="https://cwbi.sec.usace.army.mil"
|
|
40
|
-
target="_blank"
|
|
41
|
-
rel="noopener"
|
|
42
|
-
>
|
|
43
|
-
<img
|
|
44
|
-
src={`${base}cwbi-logo.png`}
|
|
45
|
-
alt="Civil Works Business Intelligence"
|
|
46
|
-
className="max-h-[75px]"
|
|
47
|
-
/>
|
|
48
|
-
</a>
|
|
49
|
-
)}
|
|
50
|
-
</div>
|
|
51
|
-
);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
export default LogoBanner;
|
|
55
|
-
export { LogoBanner };
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { FaFacebook, FaYoutube, FaFlickr } from "react-icons/fa";
|
|
2
|
-
import { FaXTwitter } from "react-icons/fa6";
|
|
3
|
-
|
|
4
|
-
function SocialLinks({ facebook, twitter, youtube, flickr }) {
|
|
5
|
-
return (
|
|
6
|
-
<ul className="text-2xl flex flex-row flex-wrap gap-2 list-none mb-3">
|
|
7
|
-
{facebook && (
|
|
8
|
-
<li>
|
|
9
|
-
<a
|
|
10
|
-
href={facebook}
|
|
11
|
-
target="_blank"
|
|
12
|
-
rel="noopener noreferrer"
|
|
13
|
-
title="Facebook"
|
|
14
|
-
>
|
|
15
|
-
<FaFacebook />
|
|
16
|
-
</a>
|
|
17
|
-
</li>
|
|
18
|
-
)}
|
|
19
|
-
{twitter && (
|
|
20
|
-
<li>
|
|
21
|
-
<a
|
|
22
|
-
href={twitter}
|
|
23
|
-
target="_blank"
|
|
24
|
-
rel="noopener noreferrer"
|
|
25
|
-
title="Twitter"
|
|
26
|
-
>
|
|
27
|
-
<FaXTwitter />
|
|
28
|
-
</a>
|
|
29
|
-
</li>
|
|
30
|
-
)}
|
|
31
|
-
{youtube && (
|
|
32
|
-
<li>
|
|
33
|
-
<a
|
|
34
|
-
href={youtube}
|
|
35
|
-
target="_blank"
|
|
36
|
-
rel="noopener noreferrer"
|
|
37
|
-
title="YouTube"
|
|
38
|
-
>
|
|
39
|
-
<FaYoutube />
|
|
40
|
-
</a>
|
|
41
|
-
</li>
|
|
42
|
-
)}
|
|
43
|
-
{flickr && (
|
|
44
|
-
<li>
|
|
45
|
-
<a
|
|
46
|
-
href={flickr}
|
|
47
|
-
target="_blank"
|
|
48
|
-
rel="noopener noreferrer"
|
|
49
|
-
title="Flickr"
|
|
50
|
-
>
|
|
51
|
-
<FaFlickr />
|
|
52
|
-
</a>
|
|
53
|
-
</li>
|
|
54
|
-
)}
|
|
55
|
-
</ul>
|
|
56
|
-
);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
export default SocialLinks;
|
|
60
|
-
export { SocialLinks };
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
import { NavbarLinks } from "./navbar-links";
|
|
2
|
-
|
|
3
|
-
const base = import.meta.env.BASE_URL;
|
|
4
|
-
|
|
5
|
-
function classNames(...classes) {
|
|
6
|
-
return classes.filter(Boolean).join(" ");
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
function Title({ title = "Title", subtitle = "Subtitle" }) {
|
|
10
|
-
return (
|
|
11
|
-
<div
|
|
12
|
-
style={{ order: 2 }}
|
|
13
|
-
className="font-usace w-full pl-[100px] bg-nav-gray"
|
|
14
|
-
>
|
|
15
|
-
<span className="text-sm font-bold mr-1">{title}</span>
|
|
16
|
-
<span className="text-sm">{subtitle}</span>
|
|
17
|
-
</div>
|
|
18
|
-
);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
function Nav({ children }) {
|
|
22
|
-
return (
|
|
23
|
-
<nav
|
|
24
|
-
style={{ order: 1 }}
|
|
25
|
-
className="flex flex-row relative justify-between content-center bg-nav-black text-white h-12 pl-[91px] z-80"
|
|
26
|
-
>
|
|
27
|
-
{children}
|
|
28
|
-
</nav>
|
|
29
|
-
);
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
function Logo() {
|
|
33
|
-
return (
|
|
34
|
-
<div className="absolute left-[15px] bottom-[-15px] w-[82px] z-10">
|
|
35
|
-
<a href="/">
|
|
36
|
-
<img className="h-[50px] w-auto" src={`${base}usace-logo-color.svg`} />
|
|
37
|
-
</a>
|
|
38
|
-
<div className="absolute left-[65px] bottom-[-9px] text-sm text-black">
|
|
39
|
-
®
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
);
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
function Search() {
|
|
46
|
-
return (
|
|
47
|
-
<input
|
|
48
|
-
style={{
|
|
49
|
-
order: 2,
|
|
50
|
-
backgroundImage: `url("${base}Magnifying_glass_icon.svg")`,
|
|
51
|
-
backgroundSize: "13px",
|
|
52
|
-
backgroundRepeat: "no-repeat",
|
|
53
|
-
backgroundPosition: "10px center",
|
|
54
|
-
}}
|
|
55
|
-
className="bg-white border-gray-200 border-2 rounded h-8 m-2 text-sm text-black w-full max-w-[300px] pl-8"
|
|
56
|
-
/>
|
|
57
|
-
);
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
function Header({ links, title, subtitle }) {
|
|
61
|
-
const headerClass = classNames(
|
|
62
|
-
"flex",
|
|
63
|
-
"flex-col",
|
|
64
|
-
"w-full",
|
|
65
|
-
"sticky",
|
|
66
|
-
"top-0",
|
|
67
|
-
"z-20"
|
|
68
|
-
);
|
|
69
|
-
|
|
70
|
-
return (
|
|
71
|
-
<header className={headerClass}>
|
|
72
|
-
<Title title={title} subtitle={subtitle} />
|
|
73
|
-
<Nav>
|
|
74
|
-
<Logo />
|
|
75
|
-
<NavbarLinks links={links} />
|
|
76
|
-
<Search />
|
|
77
|
-
</Nav>
|
|
78
|
-
</header>
|
|
79
|
-
);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
export default Header;
|
|
83
|
-
export { Header };
|
|
@@ -1,113 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
import { Menu } from "@headlessui/react";
|
|
3
|
-
import { Fragment } from "react";
|
|
4
|
-
|
|
5
|
-
const classNames = (...classes) => {
|
|
6
|
-
return classes.filter(Boolean).join(" ");
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
function NavbarLinkItem({ link, ...props }) {
|
|
10
|
-
const [open, setOpen] = useState(false);
|
|
11
|
-
|
|
12
|
-
const menuButtonClass = classNames(
|
|
13
|
-
"inline-block relative h-12 inline-flex w-auto justify-center items-center px-3 text-sm",
|
|
14
|
-
open ? "bg-nav-dark-gray text-white" : "text-nav-light-gray",
|
|
15
|
-
link.children ? "after:content-['▼'] after:text-[10px] after:ml-2" : ""
|
|
16
|
-
);
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<Menu
|
|
20
|
-
as="li"
|
|
21
|
-
className="relative"
|
|
22
|
-
onMouseOver={() => setOpen(true)}
|
|
23
|
-
onMouseLeave={() => setOpen(false)}
|
|
24
|
-
>
|
|
25
|
-
<a href={link.link} className={menuButtonClass} {...props}>
|
|
26
|
-
{link.label}
|
|
27
|
-
</a>
|
|
28
|
-
{link.children && open && (
|
|
29
|
-
<Menu.Items
|
|
30
|
-
static
|
|
31
|
-
as="ul"
|
|
32
|
-
className="absolute left-0 top-13 width-auto bg-nav-dark-gray"
|
|
33
|
-
>
|
|
34
|
-
{link.children.map((child) => {
|
|
35
|
-
return (
|
|
36
|
-
<Menu.Item key={child.id} as={Fragment}>
|
|
37
|
-
<a
|
|
38
|
-
href={child.link}
|
|
39
|
-
className="block text-sm border-b border-nav-black bg-nav-dark-gray hover:bg-nav-translucent-gray text-nav-light-gray hover:text-white text-nowrap font-semibold px-[16px] py-[8px] bg-none"
|
|
40
|
-
>
|
|
41
|
-
{child.label}
|
|
42
|
-
</a>
|
|
43
|
-
</Menu.Item>
|
|
44
|
-
);
|
|
45
|
-
})}
|
|
46
|
-
</Menu.Items>
|
|
47
|
-
)}
|
|
48
|
-
</Menu>
|
|
49
|
-
);
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// links look like this:
|
|
53
|
-
const linksTemplate = [
|
|
54
|
-
{
|
|
55
|
-
id: "layout",
|
|
56
|
-
label: "Layout",
|
|
57
|
-
link: "/layout",
|
|
58
|
-
children: [
|
|
59
|
-
{
|
|
60
|
-
id: "layout-1",
|
|
61
|
-
label: "Layout 1 goes here",
|
|
62
|
-
link: "/layout-1",
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
id: "layout-2",
|
|
66
|
-
label: "Layout 2",
|
|
67
|
-
link: "/layout-2",
|
|
68
|
-
},
|
|
69
|
-
],
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
id: "another",
|
|
73
|
-
label: "Another",
|
|
74
|
-
link: "/another",
|
|
75
|
-
},
|
|
76
|
-
];
|
|
77
|
-
|
|
78
|
-
function NavbarLinksList({ links, ...props }) {
|
|
79
|
-
return (
|
|
80
|
-
<ul
|
|
81
|
-
role="list"
|
|
82
|
-
className="flex flex-row justify-start m-0 pl-0 w-full"
|
|
83
|
-
{...props}
|
|
84
|
-
>
|
|
85
|
-
{links.map((link) => {
|
|
86
|
-
return <NavbarLinkItem key={link.id} link={link} />;
|
|
87
|
-
})}
|
|
88
|
-
</ul>
|
|
89
|
-
);
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
const NavbarLinks = ({ links = linksTemplate }) => {
|
|
93
|
-
// const [openMobileMenu, setOpenMobileMenu] = useState(false);
|
|
94
|
-
// const mobileMenuClass = classnames({
|
|
95
|
-
// "nav-links-list": true,
|
|
96
|
-
// "nav-links-list-open": openMobileMenu,
|
|
97
|
-
// });
|
|
98
|
-
return (
|
|
99
|
-
<div className="flex flex-row flex-wrap content-center justify-between w-full pr-3">
|
|
100
|
-
<NavbarLinksList links={links} />
|
|
101
|
-
</div>
|
|
102
|
-
);
|
|
103
|
-
};
|
|
104
|
-
|
|
105
|
-
export default NavbarLinks;
|
|
106
|
-
export { NavbarLinks };
|
|
107
|
-
|
|
108
|
-
// display: flex;
|
|
109
|
-
// flex-direction: row;
|
|
110
|
-
// align-items: center;
|
|
111
|
-
// justify-content: space-between;
|
|
112
|
-
// width: 100%;
|
|
113
|
-
// padding-right: 8px;
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import { useState } from "react";
|
|
2
|
-
import "./usa-banner.css";
|
|
3
|
-
|
|
4
|
-
function classNames(...classes) {
|
|
5
|
-
return classes.filter(Boolean).join(" ");
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
const USABanner = () => {
|
|
9
|
-
const [open, setOpen] = useState(false);
|
|
10
|
-
return (
|
|
11
|
-
<div
|
|
12
|
-
id="dnn_ctl03_header_banner_container"
|
|
13
|
-
className="header_banner_container"
|
|
14
|
-
>
|
|
15
|
-
<span className="header_banner_inner">
|
|
16
|
-
<div className="header_banner_flag">
|
|
17
|
-
An official website of the United States government
|
|
18
|
-
<div className="header_banner_accordion" tabIndex={0}>
|
|
19
|
-
<u
|
|
20
|
-
onClick={() => {
|
|
21
|
-
setOpen(!open);
|
|
22
|
-
}}
|
|
23
|
-
>
|
|
24
|
-
Here's how you know
|
|
25
|
-
<span
|
|
26
|
-
className={classNames(
|
|
27
|
-
"expand-more-container",
|
|
28
|
-
open ? "active" : ""
|
|
29
|
-
)}
|
|
30
|
-
>
|
|
31
|
-
<svg
|
|
32
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
33
|
-
height="24"
|
|
34
|
-
viewBox="0 0 24 24"
|
|
35
|
-
width="24"
|
|
36
|
-
>
|
|
37
|
-
<path d="M0 0h24v24H0z" fill="none"></path>
|
|
38
|
-
<path
|
|
39
|
-
className="expand-more"
|
|
40
|
-
d="M16.59 8.59L12 13.17 7.41 8.59 6 10l6 6 6-6z"
|
|
41
|
-
></path>
|
|
42
|
-
</svg>
|
|
43
|
-
</span>
|
|
44
|
-
</u>
|
|
45
|
-
</div>
|
|
46
|
-
</div>
|
|
47
|
-
{open ? (
|
|
48
|
-
<div
|
|
49
|
-
className="header_banner_panel active active"
|
|
50
|
-
style={{
|
|
51
|
-
paddingTop: "24px",
|
|
52
|
-
paddingBottom: "18px",
|
|
53
|
-
maxHeight: "154px",
|
|
54
|
-
}}
|
|
55
|
-
>
|
|
56
|
-
<div className="header_banner_panel_item">
|
|
57
|
-
<span className="header_banner_dotgov"></span>
|
|
58
|
-
<div
|
|
59
|
-
id="dnn_ctl03_bannerContentLeft"
|
|
60
|
-
className="header_banner_content"
|
|
61
|
-
>
|
|
62
|
-
<p className="banner-contentLeft-text">
|
|
63
|
-
<strong> Official websites use .mil </strong>
|
|
64
|
-
</p>
|
|
65
|
-
A <strong>.mil</strong> website belongs to an official U.S.
|
|
66
|
-
Department of Defense organization in the United States.
|
|
67
|
-
</div>
|
|
68
|
-
</div>
|
|
69
|
-
<div className="header_banner_panel_item https">
|
|
70
|
-
<span className="header_banner_https"></span>
|
|
71
|
-
<div
|
|
72
|
-
id="dnn_ctl03_bannerContentRight"
|
|
73
|
-
className="header_banner_content"
|
|
74
|
-
>
|
|
75
|
-
<p className="banner-contentRight-text">
|
|
76
|
-
<strong>Secure .mil websites use HTTPS</strong>
|
|
77
|
-
</p>
|
|
78
|
-
<div>
|
|
79
|
-
{" "}
|
|
80
|
-
A{" "}
|
|
81
|
-
<strong>
|
|
82
|
-
lock (
|
|
83
|
-
<span className="header_banner_icon_lock">
|
|
84
|
-
<svg
|
|
85
|
-
xmlns="http://www.w3.org/2000/svg"
|
|
86
|
-
width="52"
|
|
87
|
-
height="64"
|
|
88
|
-
viewBox="0 0 52 64"
|
|
89
|
-
>
|
|
90
|
-
<title>lock </title>
|
|
91
|
-
<path
|
|
92
|
-
className="icon_lock"
|
|
93
|
-
fillRule="evenodd"
|
|
94
|
-
d="M26 0c10.493 0 19 8.507 19 19v9h3a4 4 0 0 1 4 4v28a4 4 0 0 1-4 4H4a4 4 0 0 1-4-4V32a4 4 0 0 1 4-4h3v-9C7 8.507 15.507 0 26 0zm0 8c-5.979 0-10.843 4.77-10.996 10.712L15 19v9h22v-9c0-6.075-4.925-11-11-11z"
|
|
95
|
-
></path>{" "}
|
|
96
|
-
</svg>
|
|
97
|
-
</span>
|
|
98
|
-
)
|
|
99
|
-
</strong>{" "}
|
|
100
|
-
or <strong> https://</strong> means you’ve safely connected to
|
|
101
|
-
the .mil website. Share sensitive information only on
|
|
102
|
-
official, secure websites.
|
|
103
|
-
</div>
|
|
104
|
-
</div>
|
|
105
|
-
</div>
|
|
106
|
-
</div>
|
|
107
|
-
) : null}
|
|
108
|
-
</span>
|
|
109
|
-
</div>
|
|
110
|
-
);
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
export default USABanner;
|
|
114
|
-
export { USABanner };
|