UNCLASSIFIED

Commit e8be170e authored by Ben Wynn's avatar Ben Wynn
Browse files

Merge pull request #49 in USAFHNI/digital-trinity from feature/various-04-09 to develop

* commit '0a197bf8':
  Adding larger click area to mobile menu links
  Adding new logos and lings to footers Updates to some hero logo images A11y titles for hero logo images Lines for home step component
  Adjusting spacing for service category list Removing black background at mobile size for service hero Fixing scroll for service category hero icon
  Fixing zindex on the feedback form modals Adding trailing slash for mobile menu
parents 73cf4ade 0a197bf8
Pipeline #215139 passed with stage
in 1 minute
...@@ -46,7 +46,7 @@ const Classification = ({ levels, serviceName }) => { ...@@ -46,7 +46,7 @@ const Classification = ({ levels, serviceName }) => {
<Box <Box
direction="row" direction="row"
align="start" align="start"
style={{ minWidth: '380px', maxWidth: '500px' }} style={{ maxWidth: '500px' }}
a11yTitle={`Classification levels supported by ${serviceName}: ${supportedLevels}`} a11yTitle={`Classification levels supported by ${serviceName}: ${supportedLevels}`}
> >
<Box <Box
......
import React, { useContext, useState } from 'react'; import React, { useContext, useState } from 'react';
import { Box, Text, Layer, ResponsiveContext } from 'grommet'; import { Box, Text, Layer, ResponsiveContext, ThemeContext } from 'grommet';
import FeedbackForm from './FeedbackForm'; import FeedbackForm from './FeedbackForm';
import { Container, Column } from './layout'; import { Container, Column } from './layout';
import { SecondaryButton } from './core'; import { SecondaryButton } from './core';
...@@ -53,9 +53,19 @@ const FeedbackFooter = () => { ...@@ -53,9 +53,19 @@ const FeedbackFooter = () => {
</Column> </Column>
</Container> </Container>
{isOpen && ( {isOpen && (
<Layer animation="fadeIn"> <ThemeContext.Extend
<FeedbackForm onClose={handleToggleOpen} /> value={{
</Layer> layer: {
extend: () => ({
zIndex: '50',
}),
},
}}
>
<Layer animation="fadeIn">
<FeedbackForm onClose={handleToggleOpen} />
</Layer>
</ThemeContext.Extend>
)} )}
</> </>
); );
......
...@@ -4,6 +4,7 @@ import { Container, Column } from '../layout'; ...@@ -4,6 +4,7 @@ import { Container, Column } from '../layout';
import { Link } from '../core'; import { Link } from '../core';
import AFLogo from '../../images/af-logo.svg'; import AFLogo from '../../images/af-logo.svg';
import C3Logo from '../../images/c3.png'; import C3Logo from '../../images/c3.png';
import AFMCLogo from '../../images/AFMC.png';
const Footer = () => { const Footer = () => {
const size = useContext(ResponsiveContext); const size = useContext(ResponsiveContext);
...@@ -18,29 +19,55 @@ const Footer = () => { ...@@ -18,29 +19,55 @@ const Footer = () => {
justify="between" justify="between"
direction={isMobile ? 'column' : 'row'} direction={isMobile ? 'column' : 'row'}
gap="large" gap="large"
aria-hidden="true"
> >
<Box <Box
gap="medium" gap="small"
justify="center" justify="start"
align={isMobile ? 'center' : 'start'} align={isMobile ? 'center' : 'start'}
> >
<Link to="/about-us/" color="light-1" size="small" weight="bold"> <Link to="/about-us/" color="light-1" size="small" weight="bold">
About Us About Us
</Link> </Link>
<Link
to="/our-other-programs/"
color="light-1"
size="small"
weight="bold"
>
Our Other Programs
</Link>
<Link
to="https://www.wpafb.af.mil/Welcome/Fact-Sheets/Display/Article/835716/88-abw-freedom-of-information-act-foia-88-abw-installation-privacy-office/"
color="light-1"
size="small"
>
FOIA
</Link>
</Box> </Box>
<Box <Box
direction={isMobile ? 'column' : 'row'} direction={isMobile ? 'column' : 'row'}
gap="medium" gap="medium"
align="center" align="center"
> >
<img <Link to="https://www.aflcmc.af.mil/WELCOME/Organizations/Command-Control-Communications-Intelligence-Networks-Directorate/">
src={C3Logo} <img
width="117" src={C3Logo}
height="117" width="117"
alt="C3I & Networks Directorate logo" height="117"
/> alt="C3I & Networks Directorate"
<AFLogo height="117" /> />
</Link>
<Link to="https://www.afmc.af.mil/">
<img
src={AFMCLogo}
width="117"
height="117"
alt="Air Force Material Command"
/>
</Link>
<Link to="https://www.af.mil/">
<AFLogo height="117" width="150" />
</Link>
</Box> </Box>
</Box> </Box>
</Column> </Column>
......
...@@ -84,7 +84,8 @@ const Slide = ({ title, subtitle, core, cta, slug, logo, isMobile, size }) => { ...@@ -84,7 +84,8 @@ const Slide = ({ title, subtitle, core, cta, slug, logo, isMobile, size }) => {
<Box style={{ maxWidth: '600px', maxHeight: '250px' }}> <Box style={{ maxWidth: '600px', maxHeight: '250px' }}>
<Img <Img
fluid={logo.childImageSharp.fluid} fluid={logo.childImageSharp.fluid}
imgStyle={{ objectFit: 'contain' }} imgStyle={{ objectFit: 'contain', objectPosition: '0 50%' }}
alt={title}
/> />
</Box> </Box>
)} )}
...@@ -253,7 +254,7 @@ const Hero = () => { ...@@ -253,7 +254,7 @@ const Hero = () => {
return ( return (
<Box <Box
height="85vh" height="85vh"
style={{ position: 'relative', minHeight: '500px' }} style={{ position: 'relative', minHeight: '680px' }}
background="brand" background="brand"
> >
<Container fill="vertical"> <Container fill="vertical">
......
...@@ -16,8 +16,8 @@ const ServiceCatHero = ({ title, description, imageFluid, iconName }) => { ...@@ -16,8 +16,8 @@ const ServiceCatHero = ({ title, description, imageFluid, iconName }) => {
return ( return (
<Container <Container
background="black" background="black"
style={{ position: 'relative' }} style={{ position: 'relative', overflow: 'hidden' }}
pad={{ margin={{
top: isMobile top: isMobile
? theme.custom.header.stickyHeight ? theme.custom.header.stickyHeight
: theme.custom.header.height, : theme.custom.header.height,
...@@ -56,7 +56,11 @@ const ServiceCatHero = ({ title, description, imageFluid, iconName }) => { ...@@ -56,7 +56,11 @@ const ServiceCatHero = ({ title, description, imageFluid, iconName }) => {
{title} {title}
</Heading> </Heading>
<Box width={isMobile ? 'auto' : '500px'}> <Box width={isMobile ? 'auto' : '500px'}>
{description && <Markdown>{description}</Markdown>} {description && (
<Markdown size="small" margin="0">
{description}
</Markdown>
)}
</Box> </Box>
</Box> </Box>
{!isMobile && ( {!isMobile && (
...@@ -67,24 +71,24 @@ const ServiceCatHero = ({ title, description, imageFluid, iconName }) => { ...@@ -67,24 +71,24 @@ const ServiceCatHero = ({ title, description, imageFluid, iconName }) => {
gap="medium" gap="medium"
flex={{ grow: 1 }} flex={{ grow: 1 }}
> >
<IconComponent size="300" color={isMobile ? 'dark-4' : 'white'} /> <IconComponent size="200" color={isMobile ? 'dark-4' : 'white'} />
</Box> </Box>
)} )}
</Box> </Box>
{isMobile && (
<IconComponent
size="300"
color="dark-4"
style={{
position: 'fixed',
right: '-150px',
top: '100px',
zIndex: 2,
}}
/>
)}
</Column> </Column>
{isMobile && (
<IconComponent
size="250"
color="dark-4"
style={{
position: 'absolute',
right: '0',
top: '50%',
zIndex: 2,
transform: 'translate(50%, -50%)',
}}
/>
)}
<DownHex /> <DownHex />
</Container> </Container>
); );
......
...@@ -16,24 +16,26 @@ const ServiceHero = ({ title, subtitle, pretitle, categories, imageFluid }) => { ...@@ -16,24 +16,26 @@ const ServiceHero = ({ title, subtitle, pretitle, categories, imageFluid }) => {
<Container <Container
background="black" background="black"
style={{ position: 'relative' }} style={{ position: 'relative' }}
pad={{ top: theme.custom.header.height }} pad={{
top: isMobile
? theme.custom.header.stickyHeight
: theme.custom.header.height,
}}
> >
{!isMobile && ( <Img
<Img fluid={imageFluid}
fluid={imageFluid} alt="Hero"
alt="Hero" style={{
style={{ position: 'absolute',
position: 'absolute', top: '0',
top: '0', left: '0',
left: '0', right: '0',
right: '0', bottom: '0',
bottom: '0', }}
}} />
/>
)}
<Column <Column
direction="row" direction="row"
pad={{ bottom: 'large' }} pad={{ bottom: 'xlarge' }}
style={{ position: 'relative' }} style={{ position: 'relative' }}
> >
<Box pad="large"> <Box pad="large">
......
import React, { useContext } from 'react'; import React, { useContext } from 'react';
import { Box } from 'grommet'; import { Box, ResponsiveContext } from 'grommet';
import DebugContext from '../../DebugContext'; import DebugContext from '../../DebugContext';
const Column = (props) => { const Column = (props) => {
const debug = useContext(DebugContext); const debug = useContext(DebugContext);
const size = useContext(ResponsiveContext);
const isMobile = ['xsmall'].includes(size);
return ( return (
<Box <Box
width="xxlarge" width="xxlarge"
border={debug && { color: 'blue' }} border={debug && { color: 'blue' }}
pad={{ horizontal: 'large' }} pad={{ horizontal: isMobile ? 'medium' : 'large' }}
flex="grow" flex="grow"
{...props} {...props}
/> />
......
...@@ -9,9 +9,9 @@ const mainLinks = [ ...@@ -9,9 +9,9 @@ const mainLinks = [
// "to" property is no special syntax "#" just signifying // "to" property is no special syntax "#" just signifying
// its not a link. // its not a link.
{ name: 'Available Services', to: '#services' }, { name: 'Available Services', to: '#services' },
{ name: 'Solutions', to: '/solutions' }, { name: 'Solutions', to: '/solutions/' },
{ name: 'About Us', to: '/about-us' }, { name: 'About Us', to: '/about-us/' },
{ name: 'Our Other Programs', to: '/other-programs' }, { name: 'Our Other Programs', to: '/other-programs/' },
]; ];
const serviceLinks = [ const serviceLinks = [
...@@ -37,13 +37,13 @@ const MenuItem = ({ name, to, onNavigate }) => { ...@@ -37,13 +37,13 @@ const MenuItem = ({ name, to, onNavigate }) => {
return ( return (
<Box flex={{ shrink: 0 }} basis="60px" background="white" justify="center"> <Box flex={{ shrink: 0 }} basis="60px" background="white" justify="center">
{isLink ? ( {isLink ? (
<Box background="white" pad="medium" align="center" direction="row"> <Link to={to} border={{ color: 'red' }}>
<Link to={to}> <Box background="white" pad="medium" align="center" direction="row">
<Text weight="bold" color="black" size="small"> <Text weight="bold" color="black" size="small">
{name} {name}
</Text> </Text>
</Link> </Box>
</Box> </Link>
) : ( ) : (
<Button onClick={() => onNavigate(name)} aria-haspopup="menu"> <Button onClick={() => onNavigate(name)} aria-haspopup="menu">
<Box <Box
......
...@@ -2,63 +2,76 @@ import React, { useContext } from 'react'; ...@@ -2,63 +2,76 @@ import React, { useContext } from 'react';
import { Box, Text, ResponsiveContext } from 'grommet'; import { Box, Text, ResponsiveContext } from 'grommet';
import { DtHex } from '../../icons'; import { DtHex } from '../../icons';
const Step = ({ number, isMobile, children }) => ( const Step = ({ number, isMobile, children }) => {
<Box style={{ position: 'relative' }}> const hzLineStyle = { position: 'absolute', top: '32px', width: '100%' };
{/* TODO: Add this line const vtLineStyle = { position: 'absolute', left: '45px', height: '100%' };
<Box if (number === 1) {
height="1px" hzLineStyle.left = '50%';
background="dark-1" hzLineStyle.width = '50%';
width="100%" vtLineStyle.top = '50%';
style={{ position: 'absolute', top: '32px' }} vtLineStyle.height = '50%';
/> */} }
<Box if (number === 4) {
basis="1/4" hzLineStyle.right = '50%';
pad={{ horizontal: 'small' }} hzLineStyle.width = '50%';
align="center" vtLineStyle.bottom = '50%';
direction={isMobile ? 'row' : 'column'} vtLineStyle.height = '50%';
gap="medium" }
> return (
<Box style={{ position: 'relative' }}>
{!isMobile && (
<Box height="1px" background="light-1" style={hzLineStyle} />
)}
{isMobile && <Box width="1px" background="light-1" style={vtLineStyle} />}
<Box <Box
height="65px" basis="1/4"
width="80px" pad={{ horizontal: 'small', vertical: isMobile ? 'medium' : '0' }}
flex={{ shrink: 0 }}
style={{ position: 'relative' }}
align="center" align="center"
justify="center" direction={isMobile ? 'row' : 'column'}
gap="medium"
> >
<Text <Box
size="xlarge" height="65px"
weight="bold" width="80px"
color="accent-2" flex={{ shrink: 0 }}
style={{ zIndex: 2 }} style={{ position: 'relative' }}
align="center"
justify="center"
> >
{number} <Text
</Text> size="xlarge"
<DtHex weight="bold"
color="accent-2" color="accent-2"
size="65" style={{ zIndex: 2 }}
style={{ >
position: 'absolute', {number}
top: '50%', </Text>
zIndex: 0, <DtHex
transform: 'translateY(-50%)', color="accent-2"
}} size="65"
/> style={{
<DtHex position: 'absolute',
color="black" top: '50%',
size="59" zIndex: 0,
style={{ transform: 'translateY(-50%)',
position: 'absolute', }}
top: '50%', />
zIndex: 0, <DtHex
transform: 'translateY(-50%)', color="black"
}} size="59"
/> style={{
position: 'absolute',
top: '50%',
zIndex: 0,
transform: 'translateY(-50%)',
}}
/>
</Box>
<Box align="center">{children}</Box>
</Box> </Box>
<Box align="center">{children}</Box>
</Box> </Box>
</Box> );
); };
const Steps = () => { const Steps = () => {
const size = useContext(ResponsiveContext); const size = useContext(ResponsiveContext);
...@@ -70,7 +83,6 @@ const Steps = () => { ...@@ -70,7 +83,6 @@ const Steps = () => {
direction={isMobile ? 'column' : 'row'} direction={isMobile ? 'column' : 'row'}
width={isMobile ? 'medium' : 'large'} width={isMobile ? 'medium' : 'large'}
pad={{ vertical: 'large' }} pad={{ vertical: 'large' }}
gap={isMobile ? 'large' : 'none'}
> >
<Step number={1} isMobile={isMobile}> <Step number={1} isMobile={isMobile}>
<Text size="small" textAlign={isMobile ? 'start' : 'center'}> <Text size="small" textAlign={isMobile ? 'start' : 'center'}>
......
...@@ -28,15 +28,15 @@ const listQuery = graphql` ...@@ -28,15 +28,15 @@ const listQuery = graphql`
} }
`; `;
const ServiceItem = ({ node, pad }) => ( const ServiceItem = ({ node, isMobile }) => (
<Box basis="1/2" pad="medium"> <Box basis="1/2" pad={isMobile ? '0' : 'medium'}>
<Heading level={4}>{node.frontmatter.title}</Heading> <Heading level={4}>{node.frontmatter.title}</Heading>
<Classification <Classification
levels={node.frontmatter.levels} levels={node.frontmatter.levels}
serviceName={node.frontmatter.title} serviceName={node.frontmatter.title}
/> />
{/* Undo this "flex" if we don't want learn more to line up */} {/* Undo this "flex" if we don't want learn more to line up */}
<Box flex="grow" pad={{ vertical: pad }}> <Box flex="grow" pad={{ vertical: isMobile ? '0' : 'small' }}>
<Paragraph fill>{node.frontmatter.excerpt || node.excerpt}</Paragraph> <Paragraph fill>{node.frontmatter.excerpt || node.excerpt}</Paragraph>
</Box> </Box>
...@@ -49,14 +49,6 @@ const ServiceItem = ({ node, pad }) => ( ...@@ -49,14 +49,6 @@ const ServiceItem = ({ node, pad }) => (
</Box> </Box>
); );
const rowPad = {
xsmall: '0',
small: '0',
medium: 'medium',
large: 'medium',
xlarge: 'medium',
};
const ServiceList = ({ categories }) => { const ServiceList = ({ categories }) => {
const { const {
allMarkdownRemark: { nodes }, allMarkdownRemark: { nodes },
...@@ -71,12 +63,7 @@ const ServiceList = ({ categories }) => { ...@@ -71,12 +63,7 @@ const ServiceList = ({ categories }) => {
const isMobile = ['xsmall', 'small'].includes(size); const isMobile = ['xsmall', 'small'].includes(size);
return ( return (
<Box <Box pad={{ vertical: 'large' }} id="main-content">
pad={{ vertical: 'large' }}
background="white"
style={{ zIndex: 5 }}
id="main-content"
>
{catGroup.map((group, i) => ( {catGroup.map((group, i) => (
<Box key={categories[i]} gap="small"> <Box key={categories[i]} gap="small">
{categories.length > 1 && ( {categories.length > 1 && (
...@@ -107,8 +94,12 @@ const ServiceList = ({ categories }) => { ...@@ -107,8 +94,12 @@ const ServiceList = ({ categories }) => {
gap="large" gap="large"
key={item1.id} key={item1.id}
> >
{item1 && <ServiceItem node={item1} pad={rowPad[size]} />} {item1 && (
{item2 && <ServiceItem node={item2} pad={rowPad[size]} />} <ServiceItem node={item1} isMobile={isMobile} />
)}
{item2 && (
<ServiceItem node={item2} isMobile={isMobile} />
)}
</Box> </Box>
); );
})} })}
......
name: Summit name: SEITaaS Summit
title: Summit title: SEITaaS Summit
subtitle: SAP network-as-a-service subtitle: SAP network-as-a-service
core: true core: true
cta: Learn More cta: Learn More
......
<svg id="AF_LOGO" data-name="AF LOGO" xmlns="http://www.w3.org/2000/svg" width="189.115" height="147.431" viewBox="0 0 189.115 147.431" role="img"> <svg id="AF_LOGO" data-name="AF LOGO" xmlns="http://www.w3.org/2000/svg" width="189.115" height="147.431" viewBox="0 0 189.115 147.431" role="img">
<title>U.S Air Force logo</title> <title>U.S Air Force</title>
<g id="Group_50" data-name="Group 50" transform="translate(31.865)"> <g id="Group_50" data-name="Group 50" transform="translate(31.865)">
<path id="Path_501" data-name="Path 501" d="M-449.651,114.53l-11.987,8.708,14.6,10.606,4.577-14.09Z" transform="translate(495.628 -32.302)" fill="#fff"/> <path id="Path_501" data-name="Path 501" d="M-449.651,114.53l-11.987,8.708,14.6,10.606,4.577-14.09Z" transform="translate(495.628 -32.302)" fill="#fff"/>
<path id="Path_502" data-name="Path 502" d="M-429.749,146.409l11.986,8.707,11.979-8.707-11.979-8.711Z" transform="translate(480.491 -43.299)" fill="#fff"/> <path id="Path_502" data-name="Path 502" d="M-429.749,146.409l11.986,8.707,11.979-8.707-11.979-8.711Z" transform="translate(480.491 -43.299)" fill="#fff"/>
......
src/images/hero/logo-dep.png

9.68 KB | W: | H:

src/images/hero/logo-dep.png

21.2 KB | W: | H:

src/images/hero/logo-dep.png
src/images/hero/logo-dep.png
src/images/hero/logo-dep.png
src/images/hero/logo-dep.png
  • 2-up
  • Swipe
  • Onion skin
src/images/hero/logo-platform-one.png

19.7 KB | W: | H:

src/images/hero/logo-platform-one.png

65.3 KB | W: | H:

src/images/hero/logo-platform-one.png
src/images/hero/logo-platform-one.png
src/images/hero/logo-platform-one.png
src/images/hero/logo-platform-one.png
  • 2-up
  • Swipe
  • Onion skin
src/images/hero/thumb-home.png

22.5 KB | W: | H:

src/images/hero/thumb-home.png

57.5 KB | W: | H:

src/images/hero/thumb-home.png
src/images/hero/thumb-home.png
src/images/hero/thumb-home.png
src/images/hero/thumb-home.png
  • 2-up
  • Swipe
  • Onion skin
import React, { useState } from 'react'; import React, { useState } from 'react';
import { graphql } from 'gatsby'; import { graphql } from 'gatsby';
import { Box, Heading, Text, ResponsiveContext, Layer } from 'grommet'; import {
Box,
Heading,
Text,
Layer,
ResponsiveContext,
ThemeContext,
} from 'grommet';
import { AppLayout, SEO } from '../components/app'; import { AppLayout, SEO } from '../components/app';
import { Container, Column } from '../components/layout'; import { Container, Column } from '../components/layout';
import { ServiceHero } from '../components/hero'; import { ServiceHero } from '../components/hero';
...@@ -94,9 +101,19 @@ const Solutions = ({ data }) => { ...@@ -94,9 +101,19 @@ const Solutions = ({ data }) => {
</Box> </Box>
</Column> </Column>
{modalOpen && ( {modalOpen && (
<Layer animation="fadeIn"> <ThemeContext.Extend
<ContactForm onClose={handleModalToggle} /> value={{
</Layer> layer: {
extend: () => ({
zIndex: '50',
}),
},
}}
>
<Layer animation="fadeIn">
<ContactForm onClose={handleModalToggle} />
</Layer>
</ThemeContext.Extend>
)} )}
</Container> </Container>
)} )}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment