@t2ca/gatsby-theme-showcase 1.0.6 → 1.0.8

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/gatsby-config.js CHANGED
@@ -13,6 +13,12 @@ module.exports = ({ contentPath = "data", basePath = "/" }) => ({
13
13
  path: contentPath,
14
14
  },
15
15
  },
16
+ {
17
+ resolve: `gatsby-source-filesystem`,
18
+ options: {
19
+ path: "./src/assets",
20
+ },
21
+ },
16
22
  `gatsby-plugin-sharp`,
17
23
  `gatsby-transformer-sharp`,
18
24
  {
package/index.js CHANGED
@@ -3,3 +3,5 @@ export { default as Layout } from "./src/components/layout"
3
3
  export { default as Alert } from "./src/components/alert"
4
4
  export { default as Card } from "./src/components/card"
5
5
  export { default as Button } from "./src/components/button"
6
+ export { default as LogoBanner } from "./src/components/logo-banner"
7
+ export { default as Wave } from "./src/components/wave"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@t2ca/gatsby-theme-showcase",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "main": "index.js",
5
5
  "license": "MIT",
6
6
  "devDependencies": {
@@ -16,6 +16,7 @@ export default ({
16
16
  nav,
17
17
  name,
18
18
  menuList,
19
+ type,
19
20
  }) => {
20
21
  const toggleColorMode = e => {
21
22
  e.preventDefault()
@@ -2,6 +2,7 @@
2
2
  import React from "react"
3
3
  import { jsx, Styled, Container } from "theme-ui"
4
4
  import { useSpring, animated } from "react-spring"
5
+ import Wave from "./wave"
5
6
 
6
7
  export default props => {
7
8
  const titleProps = useSpring({
@@ -13,49 +14,37 @@ export default props => {
13
14
  <React.Fragment>
14
15
  <div
15
16
  sx={{
16
- py: 6,
17
+ pt: 6,
17
18
  px: [4, 5],
18
19
  position: "relative",
19
20
  bg: `MainHero`,
20
- minHeight: `80vh`, // screenHeight
21
+ minHeight: `75vh`, // screenHeight
21
22
  }}
22
23
  >
23
24
  <Container>
24
25
  <animated.div style={titleProps}>
25
- <Styled.h1 sx={{ fontSize: [6, 7] }}>{props.headingTop}</Styled.h1>
26
- <Styled.h1 sx={{ fontSize: [6, 7] }}>
26
+ <Styled.h1 sx={{ fontSize: [6, 7], fontWeight: `extrabold` }}>
27
+ {props.headingTop}
28
+ </Styled.h1>
29
+ <Styled.h1 sx={{ fontSize: [6, 7], fontWeight: `extrabold` }}>
27
30
  {props.headingMiddle}
28
31
  </Styled.h1>
29
- <Styled.h1 sx={{ fontSize: [6, 7] }}>
32
+ <Styled.h1 sx={{ fontSize: [6, 7], fontWeight: `extrabold` }}>
30
33
  {props.headingBottom}
31
34
  </Styled.h1>
35
+ <div sx={{ width: [`5/6`, `2/3`] }}>
36
+ <Styled.p sx={{ fontSize: [1, 2], py: 4, lineHeight: 2.5 }}>
37
+ Partnering with us is a journey and not just a single
38
+ transaction. While working together we will help you navigate
39
+ the dynamic digital landscape and help you get ahead of your
40
+ competitors.
41
+ </Styled.p>
42
+ </div>
32
43
  </animated.div>
33
44
  </Container>
34
45
  </div>
35
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 200">
36
- <path
37
- sx={{ fill: "Menu" }}
38
- d="M0,96L40,112C80,128,160,160,240,170.7C320,181,400,171,480,160C560,149,640,139,720,112C800,85,880,43,960,37.3C1040,32,1120,64,1200,96C1280,128,1360,160,1400,176L1440,192L1440,0L1400,0C1360,0,1280,0,1200,0C1120,0,1040,0,960,0C880,0,800,0,720,0C640,0,560,0,480,0C400,0,320,0,240,0C160,0,80,0,40,0L0,0Z"
39
- ></path>
40
- <g transform="translate(0.000000, 44.000000)">
41
- <path
42
- sx={{ fill: "waveX" }}
43
- d="M0,0 C90.7283404,0.927527913 147.912752,27.187927 291.910178,59.9119003 C387.908462,81.7278826 543.605069,89.334785 759,82.7326078 C469.336065,156.254352 216.336065,153.6679 0,74.9732496"
44
- opacity="0.100000001"
45
- ></path>
46
- <path
47
- sx={{ fill: "waveY" }}
48
- d="M100,104.708498 C277.413333,72.2345949 426.147877,52.5246657 546.203633,45.5787101 C666.259389,38.6327546 810.524845,41.7979068 979,55.0741668 C931.069965,56.122511 810.303266,74.8455141 616.699903,111.243176 C423.096539,147.640838 250.863238,145.462612 100,104.708498 Z"
49
- opacity="0.100000001"
50
- ></path>
51
- <path
52
- sx={{ fill: "waveZ" }}
53
- d="M920,51.6521276 C1130.83045,29.328812 1279.08318,17.607883 1439,40.1656806 L1439,120 C1271.17211,77.9435312 1140.17211,55.1609071 1046,51.6521276 Z"
54
- id="Path-4"
55
- opacity="0.200000003"
56
- ></path>
57
- </g>
58
- </svg>
46
+
47
+ <Wave background="Menu" />
59
48
  </React.Fragment>
60
49
  )
61
50
  }
@@ -0,0 +1,127 @@
1
+ /** @jsx jsx */
2
+ import React from "react"
3
+ import { useStaticQuery, graphql } from "gatsby"
4
+ import { jsx } from "theme-ui"
5
+ import Img from "gatsby-image"
6
+ import styled from "@emotion/styled"
7
+
8
+ // import { colors, space, mediaQueries } from "../../utils/presets"
9
+ // import { Name } from "./homepage-section"
10
+
11
+ // const Section = styled(`section`)`
12
+ // overflow: hidden;
13
+ // padding: ${space[5]} 0;
14
+ // width: 100%;
15
+ // border-bottom: 1px solid ${colors.ui.border.subtle};
16
+
17
+ // ${mediaQueries.xl} {
18
+ // margin: -1px 0;
19
+ // padding: ${space[5]} 0;
20
+ // }
21
+
22
+ // ${mediaQueries.xxl} {
23
+ // padding: ${space[7]} 0;
24
+ // }
25
+ // `
26
+
27
+ // const Title = styled(`header`)`
28
+ // padding-right: ${space[6]};
29
+ // padding-left: ${space[6]};
30
+ // ${mediaQueries.md} {
31
+ // max-width: 30rem;
32
+ // }
33
+
34
+ // ${mediaQueries.lg} {
35
+ // margin-left: ${space[9]};
36
+ // }
37
+
38
+ // ${mediaQueries.xl} {
39
+ // padding-right: 5%;
40
+ // padding-left: 5%;
41
+ // }
42
+
43
+ // ${mediaQueries.xxl} {
44
+ // padding-right: 8%;
45
+ // padding-left: 8%;
46
+ // }
47
+ // `
48
+
49
+ // const LogoGroup = styled(`div`)`
50
+ // position: relative;
51
+ // display: grid;
52
+ // grid-auto-flow: column;
53
+ // grid-auto-columns: auto;
54
+ // grid-gap: 16;
55
+ // align-items: center;
56
+ // overflow-x: scroll;
57
+ // padding-left: 3;
58
+ // padding-bottom: 1;
59
+
60
+ // &::-webkit-scrollbar {
61
+ // display: none;
62
+ // }
63
+ // `
64
+
65
+ const LogoBanner = () => {
66
+ const data = useStaticQuery(graphql`
67
+ query {
68
+ allFile(
69
+ filter: {
70
+ extension: { regex: "/(jpg)|(png)|(jpeg)/" }
71
+ relativeDirectory: { eq: "tech-logos" }
72
+ }
73
+ sort: { fields: publicURL }
74
+ ) {
75
+ edges {
76
+ node {
77
+ base
78
+ childImageSharp {
79
+ fixed(quality: 75, height: 42, grayscale: true) {
80
+ ...GatsbyImageSharpFixed_tracedSVG
81
+ }
82
+ }
83
+ }
84
+ }
85
+ }
86
+ }
87
+ `)
88
+
89
+ return (
90
+ <section
91
+ sx={{
92
+ overflow: ` hidden`,
93
+ padding: 3,
94
+ width: `100%`,
95
+ borderBottom: `1px solid transparent`,
96
+ bg: `gray.1`,
97
+ }}
98
+ >
99
+ <div>{/*<div>Technologies we use</div>*/}</div>
100
+ <div
101
+ sx={{
102
+ position: "relative",
103
+ display: "grid",
104
+ gridAutoFlow: "column",
105
+ gridAutoColumns: "auto",
106
+ gridGap: 4,
107
+ alignItems: "center",
108
+ overflowX: "scroll",
109
+ paddingLeft: 2,
110
+ paddingBottom: 1,
111
+ "&::-webkit-scrollbar": { display: "none" },
112
+ }}
113
+ >
114
+ {data.allFile.edges.map(({ node: image }) => (
115
+ <Img
116
+ alt={`${image.base.split(`.`)[0]}`}
117
+ fixed={image.childImageSharp.fixed}
118
+ key={image.base}
119
+ style={{ opacity: 0.5 }}
120
+ />
121
+ ))}
122
+ </div>
123
+ </section>
124
+ )
125
+ }
126
+
127
+ export default LogoBanner
@@ -4,36 +4,24 @@ import { jsx } from "theme-ui"
4
4
  import { Link } from "gatsby"
5
5
  import isAbsoluteURL from "is-absolute-url"
6
6
 
7
- const styles = {
8
- display: "inline-block",
9
- px: 0,
10
- py: 0,
11
- color: "primary",
12
- margin: 3,
13
- textDecoration: "none",
14
- borderBottom: `2px solid transparent`,
15
- lineHeight: 2,
16
- transition: `all .5s ease-in;`,
17
- "&.active": {
18
- borderBottom: `1px solid transparent`,
19
- borderColor: "secondary",
20
- color: "secondary",
21
- cursor: "default",
22
- },
23
- "&:hover:not(.active)": {
24
- borderColor: "primary",
25
- },
26
- }
27
-
28
- export default ({ href, ...props }) => {
7
+ export default ({ href, type = "basic", ...props }) => {
29
8
  const isExternal = isAbsoluteURL(href || "")
30
9
  if (isExternal) {
31
10
  return (
32
- <a href={href} sx={styles}>
11
+ <a href={href} sx={props.styles}>
33
12
  {props}
34
13
  </a>
35
14
  )
36
15
  }
37
16
  const to = props.to || href
38
- return <Link {...props} to={to} sx={styles} activeClassName="active" />
17
+ return (
18
+ <Link
19
+ {...props}
20
+ to={to}
21
+ sx={{
22
+ variant: `links.${type}`,
23
+ }}
24
+ activeClassName="active"
25
+ />
26
+ )
39
27
  }
@@ -5,6 +5,7 @@ import { Link } from "gatsby"
5
5
  import Img from "gatsby-image"
6
6
  import { useSpring, animated } from "react-spring"
7
7
  import { FaArrowLeft } from "react-icons/fa"
8
+ import Wave from "./wave"
8
9
 
9
10
  const Project = data => {
10
11
  const Image = animated(Img)
@@ -21,69 +22,39 @@ const Project = data => {
21
22
 
22
23
  return (
23
24
  <React.Fragment>
24
- <div>
25
- <Container sx={{ px: [0, 4], py: 0 }}>
26
- <div
25
+ <Container sx={{ px: [0, 4], py: 0 }}>
26
+ <div
27
+ sx={{
28
+ py: "15rem",
29
+ px: ["1.5rem", "3rem"],
30
+ zIndex: "1",
31
+ position: "relative",
32
+ }}
33
+ >
34
+ <animated.div style={titleProps}>
35
+ <Styled.a as={Link} to="/projects/">
36
+ <FaArrowLeft size={12} sx={{ marginRight: ".25rem" }} />
37
+ Back to showcase
38
+ </Styled.a>
39
+ <Styled.h1>{data.title}</Styled.h1>
40
+ </animated.div>
41
+
42
+ <Image
43
+ fluid={data.hero.childImageSharp.fluid}
44
+ style={imgProps}
27
45
  sx={{
28
- py: "15rem",
29
- px: ["1.5rem", "3rem"],
30
- zIndex: "1",
31
- position: "relative",
46
+ position: "absolute !important",
47
+ top: "0",
48
+ left: "10vw",
49
+ right: "0",
50
+ bottom: "0",
51
+ zIndex: "-1",
32
52
  }}
33
- >
34
- <animated.div style={titleProps}>
35
- <Styled.a as={Link} to="/projects/">
36
- <FaArrowLeft size={12} sx={{ marginRight: ".25rem" }} />
37
- Back to showcase
38
- </Styled.a>
39
- <Styled.h1>{data.title}</Styled.h1>
40
- </animated.div>
53
+ />
54
+ </div>
55
+ </Container>
41
56
 
42
- <Image
43
- fluid={data.hero.childImageSharp.fluid}
44
- style={imgProps}
45
- sx={{
46
- position: "absolute !important",
47
- top: "0",
48
- left: "10vw",
49
- right: "0",
50
- bottom: "0",
51
- zIndex: "-1",
52
- }}
53
- />
54
- </div>
55
- </Container>
56
- </div>
57
- <div sx={{ bg: `gray.1` }}>
58
- <svg
59
- sx={{ bg: "pink.1" }}
60
- xmlns="http://www.w3.org/2000/svg"
61
- viewBox="0 0 1440 200"
62
- >
63
- <path
64
- sx={{ fill: "Menu" }}
65
- d="M0,96L40,112C80,128,160,160,240,170.7C320,181,400,171,480,160C560,149,640,139,720,112C800,85,880,43,960,37.3C1040,32,1120,64,1200,96C1280,128,1360,160,1400,176L1440,192L1440,0L1400,0C1360,0,1280,0,1200,0C1120,0,1040,0,960,0C880,0,800,0,720,0C640,0,560,0,480,0C400,0,320,0,240,0C160,0,80,0,40,0L0,0Z"
66
- ></path>
67
- <g transform="translate(0.000000, 44.000000)">
68
- <path
69
- sx={{ fill: "waveX" }}
70
- d="M0,0 C90.7283404,0.927527913 147.912752,27.187927 291.910178,59.9119003 C387.908462,81.7278826 543.605069,89.334785 759,82.7326078 C469.336065,156.254352 216.336065,153.6679 0,74.9732496"
71
- opacity="0.100000001"
72
- ></path>
73
- <path
74
- sx={{ fill: "waveY" }}
75
- d="M100,104.708498 C277.413333,72.2345949 426.147877,52.5246657 546.203633,45.5787101 C666.259389,38.6327546 810.524845,41.7979068 979,55.0741668 C931.069965,56.122511 810.303266,74.8455141 616.699903,111.243176 C423.096539,147.640838 250.863238,145.462612 100,104.708498 Z"
76
- opacity="0.100000001"
77
- ></path>
78
- <path
79
- sx={{ fill: "waveZ" }}
80
- d="M920,51.6521276 C1130.83045,29.328812 1279.08318,17.607883 1439,40.1656806 L1439,120 C1271.17211,77.9435312 1140.17211,55.1609071 1046,51.6521276 Z"
81
- id="Path-4"
82
- opacity="0.200000003"
83
- ></path>
84
- </g>
85
- </svg>
86
- </div>
57
+ <Wave background="cBg" />
87
58
  </React.Fragment>
88
59
  )
89
60
  }
@@ -0,0 +1,40 @@
1
+ /** @jsx jsx */
2
+ import React from "react"
3
+ import { jsx } from "theme-ui"
4
+
5
+ const Wave = ({ background = "mBg" }) => {
6
+ return (
7
+ <div sx={{ bg: `mBg` }}>
8
+ <svg
9
+ sx={{ bg: "mBg" }}
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ viewBox="0 0 1440 200"
12
+ >
13
+ <path
14
+ sx={{ fill: background }}
15
+ d="M0,96L40,112C80,128,160,160,240,170.7C320,181,400,171,480,160C560,149,640,139,720,112C800,85,880,43,960,37.3C1040,32,1120,64,1200,96C1280,128,1360,160,1400,176L1440,192L1440,0L1400,0C1360,0,1280,0,1200,0C1120,0,1040,0,960,0C880,0,800,0,720,0C640,0,560,0,480,0C400,0,320,0,240,0C160,0,80,0,40,0L0,0Z"
16
+ ></path>
17
+ <g transform="translate(0.000000, 44.000000)">
18
+ <path
19
+ sx={{ fill: "waveX" }}
20
+ d="M0,0 C90.7283404,0.927527913 147.912752,27.187927 291.910178,59.9119003 C387.908462,81.7278826 543.605069,89.334785 759,82.7326078 C469.336065,156.254352 216.336065,153.6679 0,74.9732496"
21
+ opacity="0.100000001"
22
+ ></path>
23
+ <path
24
+ sx={{ fill: "waveY" }}
25
+ d="M100,104.708498 C277.413333,72.2345949 426.147877,52.5246657 546.203633,45.5787101 C666.259389,38.6327546 810.524845,41.7979068 979,55.0741668 C931.069965,56.122511 810.303266,74.8455141 616.699903,111.243176 C423.096539,147.640838 250.863238,145.462612 100,104.708498 Z"
26
+ opacity="0.100000001"
27
+ ></path>
28
+ <path
29
+ sx={{ fill: "waveZ" }}
30
+ d="M920,51.6521276 C1130.83045,29.328812 1279.08318,17.607883 1439,40.1656806 L1439,120 C1271.17211,77.9435312 1140.17211,55.1609071 1046,51.6521276 Z"
31
+ id="Path-4"
32
+ opacity="0.200000003"
33
+ ></path>
34
+ </g>
35
+ </svg>
36
+ </div>
37
+ )
38
+ }
39
+
40
+ export default Wave
@@ -2,8 +2,6 @@ import theme from "@theme-ui/preset-tailwind"
2
2
 
3
3
  export default {
4
4
  ...theme.colors,
5
- // primary: theme.colors.blue[5],
6
- // primaryHover: theme.colors.blue[6],
7
5
  mBg: `#f8f9fa`,
8
6
  cBg: `#ffffff`,
9
7
  sBg: `#e2e8f0`,
@@ -52,6 +52,89 @@ export default merge(
52
52
  width: `full`,
53
53
  },
54
54
  },
55
+ links: {
56
+ primary: {
57
+ display: "inline-block",
58
+ px: 0,
59
+ py: 0,
60
+ color: "primary",
61
+ margin: 3,
62
+ textDecoration: "none",
63
+ lineHeight: 1.75,
64
+ position: `relative`,
65
+ "&.active": {
66
+ borderBottom: `1px solid transparent`,
67
+ borderColor: "secondary",
68
+ color: "secondary",
69
+ cursor: "default",
70
+ },
71
+ "&::after": {
72
+ content: '""',
73
+ position: "absolute",
74
+ height: "1px",
75
+ width: 0,
76
+ bottom: 0,
77
+ left: 0,
78
+ bg: "primary",
79
+ transition: `all .25s ease-in-out 0s`,
80
+ },
81
+ "&:hover:not(.active)::after": {
82
+ width: `100%`,
83
+ },
84
+ },
85
+ secondary: {
86
+ display: "inline-block",
87
+ px: 0,
88
+ py: 0,
89
+ color: "primary",
90
+ margin: 3,
91
+ textDecoration: "none",
92
+ lineHeight: 1.75,
93
+ position: `relative`,
94
+ "&.active": {
95
+ borderBottom: `1px solid transparent`,
96
+ borderColor: "secondary",
97
+ color: "secondary",
98
+ cursor: "default",
99
+ },
100
+ "&::after": {
101
+ content: '""',
102
+ position: "absolute",
103
+ width: "100%",
104
+ height: "1px",
105
+ bottom: "0",
106
+ left: "0",
107
+ visibility: "hidden",
108
+ transform: "scaleX(0)",
109
+ transition: "all 0.25s ease-in-out 0s",
110
+ bg: "primary",
111
+ },
112
+ "&:hover:not(.active)::after": {
113
+ visibility: "visible",
114
+ transform: "scaleX(1)",
115
+ },
116
+ },
117
+ basic: {
118
+ display: "inline-block",
119
+ px: 0,
120
+ py: 0,
121
+ color: "primary",
122
+ margin: 3,
123
+ textDecoration: "none",
124
+ borderBottom: `2px solid transparent`,
125
+ lineHeight: 2,
126
+ transition: `all .5s ease-in;`,
127
+ "&.active": {
128
+ borderBottom: `1px solid transparent`,
129
+ borderColor: "secondary",
130
+ color: "secondary",
131
+ cursor: "default",
132
+ },
133
+ "&:hover:not(.active)": {
134
+ borderColor: "primary",
135
+ },
136
+ },
137
+ },
55
138
  alerts: {
56
139
  error: {
57
140
  borderRadius: `sm`,
@@ -9,7 +9,11 @@ const ProjectTemplates = ({ data: { projectYaml }, location }) => {
9
9
  }
10
10
 
11
11
  return (
12
- <Layout main={styles} header={styles} location={location}>
12
+ <Layout
13
+ main={{ ...styles, borderBottom: `inherit` }}
14
+ header={styles}
15
+ location={location}
16
+ >
13
17
  <Project {...projectYaml} />
14
18
  </Layout>
15
19
  )